我需要通过以下方式验证JSON文件:

const setupSchema = fs.readFileSync(schemaDir +'/setup.json');

并编译:
const setupValidator = ajv.compile(setupSchema);

我的问题是那条线:
console.log( setupValidator('') );

始终返回true,即使验证器的参数是空字符串(如上所述)。我认为加载方式不好,但是...需要问比我聪明的人。

最佳答案

从快速入门指南:(http://json-schema.org/)



这意味着,如果您的架构是空对象或不使用JSON架构词汇表,那么Ajv的compile函数将始终生成始终通过的验证函数:

var Ajv = require('ajv');
var ajv = new Ajv({allErrors: true});

var schema = {
    foo: 'bar',
    bar: 'baz',
    baz: 'baz'
};

var validate = ajv.compile(schema);

validate({answer: 42}); //=> true
validate('42'); //=> true
validate(42); //=> true

根据JSON Schema规范,您的setup.json可能不是正确加载的,还是不是架构。

10-06 04:50