我尝试将一个ARM设备连接到Azure IoT Hub。我选择了Node.js并获得了一些示例代码来连接设备。我添加了所需的NPM软件包,例如azure_iot_device,azure_iot_common,azure_iot_http_base。
在代码中,有一行代码会导致错误。
行: client.sendEvent(message,printResultFor(' send'));
在此之后,在调试控制台上,我收到消息:
\ NodejsWebApp1 \ node_modules \天青-IOT装置\ lib中\ client.js:596
返回新客户端(new transportCtor(authenticationProvider),null,new blob_upload_1.BlobUploadClient(authenticationProvider)); ^
TypeError:transportCtor不是一个函数 在Function.Client.fromConnectionString
(C:\ Users \用户InterestedGuy \源\回购\ NodejsWebApp1 \ NodejsWebApp1 \ node_modules \天青-IOT装置\ lib中\ client.js:596:27) 在sendmsg(C:\ Users \ InterestedGuy \ source \ repos \ NodejsWebApp1 \ NodejsWebApp1 \ server.js:123:32) 在服务器上。 (C:\ Users \用户InterestedGuy \源\回购\ NodejsWebApp1 \ NodejsWebApp1 \ server.js:48:9) 在emitTwo(events.js:87:13) 在Server.emit(events.js:172:7) 在HTTPParser.parserOnIncoming [as oncoming](_http_server.js:529:12) 在HTTPParser.parserOnHeadersComplete(_http_common.js:88:23)
按任意键继续......
首先猜测我错过了一个图书馆,所以我只是在网上搜索了应该定义transportCtor的内容 - 但没有成功。
所以简单的问题是:这个函数应该定义在哪里?我希望该功能是Azure IoT SDK的一部分,但我找不到它。由于来自azure_iot_device的模块client.js报告错误,我希望它在SDK中的某个地方 - 但在哪里?
THX提供任何建议
答案 0 :(得分:0)
您应安装 azure-iot-device-http 程序包,以便通过HTTP 1.1从任何设备与Azure IoT Hub进行通信。您可以使用此命令获取最新版本。
npm install -g azure-iot-device-http@latest
以下代码是一个教程,展示了如何使用此包。
var clientFromConnectionString = require('azure-iot-device-http').clientFromConnectionString;
var Message = require('azure-iot-device').Message;
var connectionString = '[IoT Hub device connection string]';
var client = clientFromConnectionString(connectionString);
var connectCallback = function (err) {
if (err) {
console.error('Could not connect: ' + err);
} else {
console.log('Client connected');
var message = new Message('some data from my device');
client.sendEvent(message, function (err) {
if (err) console.log(err.toString());
});
client.on('message', function (msg) {
console.log(msg);
client.complete(msg, function () {
console.log('completed');
});
});
}
};
client.open(connectCallback);
BTW,在本教程中,您还需要安装azure-iot-device软件包。