我使用Azure IoT Hub的Node.JS库发送一些遥测数据,并且间接地从库中抛出以下错误
未处理的拒绝TypeError:无法在Amqp的C:\ Source \ Messenger \ app.js:156:17处读取未定义的属性'on' . (C:\ Source \ Messenger \ node_modules \ azure-iot-device \ node_modules \ azure-iot-common \ lib \ amqp.js:157:17)位于C:\ Source \ Messenger \ node_modules \ azure-iot-device \ node_modules \ azure-iot-common \ lib \ amqp.js:54:19 at C:\ Source \ Messenger \ node_modules \ azure-iot-device \ node_modules \ azure-iot-common \ lib \ amqp.js:84:17在Promise._settlePromiseFromHandler的tryCatcher(C:\ Source \ Messenger \ node_modules \ azure-iot-device \ node_modules \ azure-iot-common \ node_modules \ amqp10 \ node_modules \ bluebird \ js \ release \ util.js:11:23) Promise._settlePromise(C:C:\ Source \ Messenger \ node_modules \ azure-iot-device \ node_modules \ azure-iot-common \ node_modules \ amqp10 \ node_modules \ bluebird \ js \ release \ promise.js:489:31) :\ Source \ Messenger \ node_modules \ azure-iot-device \ node_modules \ azure-iot-common \ node_modules \ amqp10 \ node_modules \ bluebird \ js \ release \ promise.js:546:18)在Promise._settlePromise0(C:\来源\信使\ node_modules \蔚IOT设备\ node_modules \蔚IOT常见\ node_modules \ amqp10 \ node_modules \蓝鸟\ JS \发布\舞会ise.js:591:10)在Promise._settlePromises(C:\ Source \ Messenger \ node_modules \ azure-iot-device \ node_modules \ azure-iot-common \ node_modules \ amqp10 \ node_modules \ bluebird \ js \ release \ promise . js:670:18)在Async._drainQueue(C:\ Source \ Messenger \ node_modules \ azure-iot-device \ node_modules \ azure-iot-common \ node_modules \ amqp10 \ node_modules \ bluebird \ js \ release \ async.js: 129:16)在Async._drainQueues(C:\ Source \ Messenger \ node_modules \ azure-iot-device \ node_modules \ azure-iot-common \ node_modules \ amqp10 \ node_modules \ bluebird \ js \ release \ async.js:139: 10)在Immediate.Async.drainQueues [as _onImmediate](C:\ Source \ Messenger \ node_modules \ azure-iot-device \ node_modules \ azure-iot-common \ node_modules \ amqp10 \ node_modules \ bluebird \ js \ release \ async . JS:16:14)
目前我正在永远运行我的脚本,以便在生成错误时恢复 .
有没有其他人有这个问题并设法解决它?
我的代码如下所示
azureClient = azureDevice.Client.fromConnectionString(connectionString, azureDevice.Amqp);
var message = new azureDevice.Message(JSON.stringify('TEST MESSAGE'));
azureClient.sendEvent(message, function (err) {
if (err != null) {
Configure();
}
});
2 回答
Azure IoT Hub是Azure上的预览功能服务 . 而针对Node.js的Azure IoT设备SDK正在快速发展 .
我试图让熟悉这个主题的人参与进一步研究这个问题 . 可能会有一些时间延迟 .
感谢您的耐心等待 .
对于此问题,我建议您可以使用AMQPWS或HTTP传输来发送和接收消息 . 请参考我的步骤来实现发送和接收消息:
首先,我们应该创建一个设备并获取设备ID和SAS . 在Azure新门户上创建了IOT中心后,我在node.js命令行上运行了这些命令:在新门户上创建IOT中心 .
我得到的结果如下:
其次,我在node.js项目上安装了SDK,文件夹结构与此图片相同:
第三,我在我的项目上运行此代码:
它工作正常 . 此外,如果您使用“Http”传输,它也可以正常工作 . 您需要使用以下代码:
这就是我建议你使用AMQPWS的原因,因为这个代码在
"azure-iot-device\node_modules\azure-iot-common\node_modules\amqp10-transport-ws":
中如果URI的格式为'wss',则它将注册AMQP传输 . 但AMQP传输的格式类似于“amqp://” . 希望这可以帮助 .