【发布时间】:2017-06-07 07:30:47
【问题描述】:
我正在尝试使用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))
);
});
};
}
【问题讨论】:
-
你试过
import * as Ajv from 'ajv'吗? -
@elclanrs 成功了,谢谢
-
@elclanrs,您能否将您的评论升级为答案,以便其他人可以找到它?谢谢
标签: typescript import require