Устройство Azure IoT: введите ошибку в client.js

Я пытаюсь подключить устройство ARM к Центру Интернета вещей Azure. Я выбрал Node.js и получил образец кода для подключения устройства. Я добавил необходимые пакеты NPM, такие как azure_iot_device, azure_iot_common, azure_iot_http_base.

В коде есть одна строка кода, которая вызывает ошибку.

Строка: client.sendEvent (message, printResultFor ('send'));

После этого на консоли отладки я получаю сообщение:

\ NodejsWebApp1 \ node_modules \ azure-iot-device \ lib \ client.js: 596

вернуть нового клиента (новый transportCtor (authenticationProvider), null, новый blob_upload_1.BlobUploadClient (authenticationProvider)); ^

TypeError: transportCtor не является функцией в Function.Client.fromConnectionString

(C: \ Users \ IntehibitedGuy \ source \ repos \ NodejsWebApp1 \ NodejsWebApp1 \ node_modules \ azure-iot-device \ lib \ client.js: 596: 27) в sendmsg (C: \ Users \ IntehibitedGuy \ source \ repos \ NodejsWebApp1 \ NodejsWebApp1 \ server.js: 123: 32) на сервере. (C: \ Users \ IntehibitedGuy \ source \ repos \ NodejsWebApp1 \ NodejsWebApp1 \ server.js: 48: 9) в emitTwo (events.js: 87: 13) в Server.emit (events.js: 172: 7) в HTTPParser .parserOnIncoming [как onIncoming] (_http_server.js: 529: 12) в HTTPParser.parserOnHeadersComplete (_http_common.js: 88: 23)

Нажмите любую клавишу, чтобы продолжить ...

Первое предположение заключалось в том, что мне не хватает библиотеки, поэтому я просто поискал в Интернете, где должен был быть определен transportCtor, - но безуспешно.

Возникает простой вопрос: где должна быть определена эта функция? Я ожидал, что эта функция является частью пакета SDK для Azure IoT, но мне не удалось ее найти. Поскольку модуль client.js от azure_iot_device сообщает об ошибке, я ожидаю, что это где-то в SDK, но где?

THX за любой совет


person InterestedGuy    schedule 23.05.2018    source источник


Ответы (1)


Вам следует установить пакет azure-iot-device-http для связи с Azure IoT Hub с любого устройства через HTTP 1.1. Вы можете использовать эту команду, чтобы получить последнюю версию.

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);

Кстати, для этого руководства вам также необходимо установить пакет azure-iot-device.

person Michael Xu - MSFT    schedule 24.05.2018