1. ホーム
  2. node.js

[解決済み] nodejs mqttjs Missingプロトコルエラー

2022-02-07 08:52:06

質問

nodejsでmqttjsの動作例を取得しようとしています。コマンドを使用してmain.jsファイルを実行しようとすると、次のエラーが表示されます。 node main.js をWindows 10のcmdプロンプトで表示させています。

のエラーが発生しました。

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()
})

解決方法は?

これは、(エラーにあるように)あなたが connect() メソッドを使用します。

生のIPアドレスを渡しましたが、プロトコルとホストを含むURIである必要があります。

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

これは、github とパッケージの両方に同梱されている README.md の例で示されています。 npm .

また、APIドキュメントにも記載されています。

mqtt.connect([url], オプション)

与えられた url とオプションで指定されたブローカーに接続し Clientを返します。

URL には、以下のプロトコルを指定できます: 'mqtt', 'mqtts', 'tcp', tls', 'ws', 'wss'。また、URLは この場合、2つのオブジェクトはマージされます。 URLと接続オプションの両方を一つのオブジェクトに渡します。