nodejs mqttjs缺少协议错误

时间:2018-07-24 22:02:16

标签: node.js mqtt

我正在尝试在nodejs中获得mqttjs的工作示例。尝试在Windows 10 cmd提示符下使用命令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 个答案:

答案 0 :(得分:2)

这是因为(作为错误状态)您错过了需要传递给 A a = new A(); 方法的URI中的协议。

您已经传递了原始IP地址,但它必须是URI,包括协议和主机。

connect()

这在github和npm上的软件包随附的README.md中的示例中得到了显示。

API文档中也对此进行了描述:

  

mqtt.connect([url],options)

     

连接到由给定URL和选项指定的代理,以及   返回一个客户端。

     

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