Node js mosca 代理错误:预期“schema”是对象或布尔值

Jam*_*ies 6 node.js mqtt mosca

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

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

var server = new mosca.Server(settings);

server.on("ready", function () {
  console.log("ready");
});
Run Code Online (Sandbox Code Playgroud)

当我运行文件时出现此错误:

/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
}
Run Code Online (Sandbox Code Playgroud)

我在跑步:

节点:v12.18.4

npm:6.14.6

Alb*_*eja 7

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


小智 5

将此行注释在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');
}
Run Code Online (Sandbox Code Playgroud)