当前位置:  开发笔记 > 编程语言 > 正文

用Import语句替换Require语句导致错误

如何解决《用Import语句替换Require语句导致错误》经验,为你挑选了1个好方法。

我正在尝试使用Ajv(我正在使用打字稿).

import { Ajv } from "ajv";

let ajv = new Ajv({allErrors: true});

只是想知道它为什么会出现这个错误:

[ts]'Ajv'只引用一个类型,但在这里被用作值.

我使用它和文档一样:

var Ajv = require('ajv');
var ajv = new Ajv(); // options can be passed, e.g. {allErrors: true}
var validate = ajv.compile(schema);
var valid = validate(data);
if (!valid) console.log(validate.errors);

但我使用import而不是require,所以我没有设置变量,所以我猜这是导致错误.使用时如何定义变量用于import代替require

所有代码:

import { Injectable } from "@angular/core";
import { Http, Headers, Response } from "@angular/http";
import { Configuration } from "../shared/configuration.model";
import { Observable } from "rxjs/Rx";
import { Ajv } from "ajv";

@Injectable()
export class ValidateJSONSchemaService {

    constructor(private http: Http) { }

    public valJson(json, schemaFile: string) {
        return new Promise((resolve, reject) => {
            this.http.get(schemaFile)
                .toPromise()
                .then(fileContents => fileContents.json())
                .then((schema) => {
                    let ajv = new Ajv({allErrors: true});
                    ajv.validate(schema, json) ? 
                    resolve() :
                    reject(new Error("JSON does not conform to schema: " + ajv.errorsText()));
                }, err => reject(
                    new Error("Unable to get schema file contents:" + err))
                );
        });
    };
}

Devin Prejea.. 11

正如@elclanrs所说,使用 import * as Ajv from 'ajv'

不试图获得信任,但这已经过了一年,我几乎错过了答案,因为没有任何标记为答案.



1> Devin Prejea..:

正如@elclanrs所说,使用 import * as Ajv from 'ajv'

不试图获得信任,但这已经过了一年,我几乎错过了答案,因为没有任何标记为答案.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有