5

我创建了一个简单的经纪人:

var mosca = require("mosca");
var settings = {
  port: 1883,
};

var server = new mosca.Server(settings);

server.on("ready", function () {
  console.log("ready");
});

运行文件时出现此错误:

/home//Documents/mqtt/node_modules/jsonschema/lib/validator.js:107
    throw new SchemaError('Expected `schema` to be an object or boolean');
    ^
SchemaError: Expected `schema` to be an object or boolean
    at Validator.validate (/home//Documents/mqtt/node_modules/jsonschema/lib/validator.js:107:11)
    at Object.validate (/home//Documents/mqtt/node_modules/mosca/lib/options.js:264:26)
    at new Server (/home//Documents/mqtt/node_modules/mosca/lib/server.js:104:34)
    at Object.<anonymous> (/home//Documents/mqtt/broker.js:16:14)
    at Module._compile (internal/modules/cjs/loader.js:1137:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
    at Module.load (internal/modules/cjs/loader.js:985:32)
    at Function.Module._load (internal/modules/cjs/loader.js:878:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47 {
  schema: undefined
}

我在跑步:

节点:v12.18.4

npm:6.14.6

4

3 回答 3

4

就像 JD Allen 说的,运行 aedes 比运行 mosca 好,它的依赖 jsonschema 更新到 1.2.8 版本后就坏了,你可以手动安装 jsonschema 1.2.6 运行它而不会出错。在更新到 1.2.8 之前它还没有被破坏

于 2020-10-04T18:08:29.673 回答
3

validator.js在( )中评论这一行\node_modules\jsonschema\lib\validator.js:111

if((typeof schema !== 'boolean' && typeof schema !== 'object') || schema === null){
     throw new SchemaError('Expected `schema` to be an object or boolean');
}
于 2020-10-27T23:06:25.363 回答
0

在运行时转到 \node_modules\jsonschema\lib\validator.js。将第 106 行的代码替换为

if((typeof schema == 'boolean' && typeof schema == 'object') || schema === null){

于 2021-12-01T15:05:59.423 回答