【问题标题】:nodejs mqttjs Missing protocol errornodejs mqttjs缺少协议错误
【发布时间】:2018-07-24 22:02:16
【问题描述】:

我正在尝试在 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()
})

【问题讨论】:

    标签: node.js mqtt


    【解决方案1】:

    这是因为(如错误所示)您错过了需要传递给 connect() 方法的 URI 中的协议。

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

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

    这在 github 和 npm 上的包中包含的 README.md 中的示例中显示。

    API 文档中也有描述:

    mqtt.connect([url], options)

    连接到由给定 url 和选项指定的代理和 返回一个客户。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-17
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多