Node.js MQTT.js 缺少协议错误。

3
我会尽力帮助您翻译中文。以下是需要翻译的内容:

我正在尝试在nodejs中获得mqttjs的工作示例。在Windows 10命令提示符中使用命令node main.js执行我的main.js文件时,我遇到了以下错误:

错误:

C:\Users\Rich\Documents\Code\nodejs\onoff\node_modules\mqtt\lib\connect\index.js:64
      throw new Error('Missing protocol')
      ^

Error: Missing protocol
    at Object.connect (C:\Users\Rich\Documents\Code\nodejs\onoff\node_modules\mqtt\lib\connect\index.js:64:13)
    at Object.<anonymous> (C:\Users\Rich\Documents\Code\nodejs\onoff\main.js:2:20)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Function.Module.runMain (module.js:693:10)
    at startup (bootstrap_node.js:188:16)
    at bootstrap_node.js:609:3

代码:

var mqtt = require('mqtt');
var client  = mqtt.connect('192.168.0.22');

client.on('connect', function () {
  client.subscribe('mydevice')
  client.publish('presence', 'Hello mqtt')
})

client.on('message', function (topic, message) {
  // message is Buffer
  console.log(message.toString())
  client.end()
})
1个回答

14

正如错误所述,原因是您在要传递给connect()方法的URI中省略了协议。

您已经传递了一个裸IP地址,但它需要是一个包括协议和主机的URI。

var client  = mqtt.connect('mqtt://192.168.0.22')

在包含在Github和npm中的README.md示例中展示了这一点。

该方法还在API文档中进行了描述:

mqtt.connect([url], options)

连接到指定URL和选项的经纪人,并返回Client。

URL可以使用以下协议: 'mqtt'、'mqtts'、'tcp'、'tls'、'ws'、'wss'。 URL也可以是由URL.parse()返回的对象,在这种情况下,两个对象将被合并,即您可以传递一个具有URL和连接选项的单个对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接