Node.js 使用节点sdk将模块连接到边缘集线器时出错-NotConnectedError:无法获取本地颁发者证书

Node.js 使用节点sdk将模块连接到边缘集线器时出错-NotConnectedError:无法获取本地颁发者证书,node.js,azure-iot-hub,azure-iot-edge,Node.js,Azure Iot Hub,Azure Iot Edge,边缘模块节点客户端无法通过MQTT连接到边缘集线器。它抛出证书错误-NotConnectedError:无法获取本地颁发者证书 证书设置为客户端的一个选项 var certFile = process.env.EdgeModuleCACertificateFile; var connectionString = process.env.EdgeHubConnectionString var Protocol = require('azure-iot-device-mqtt').Mqtt; var

边缘模块节点客户端无法通过MQTT连接到边缘集线器。它抛出证书错误-
NotConnectedError:无法获取本地颁发者证书

证书设置为客户端的一个选项

var certFile = process.env.EdgeModuleCACertificateFile;
var connectionString = process.env.EdgeHubConnectionString
var Protocol = require('azure-iot-device-mqtt').Mqtt;
var Client = require('azure-iot-device').Client;
var client = Client.fromConnectionString(connectionString, Protocol);

var options = {
    ca: fs.readFileSync(certFile,'utf-8').toString(),
};
client.setOptions(options,()=>{
    console.log('Client transport option set');
});
client.open(connectCallback);

如果不了解有关您的环境的详细信息,我将无能为力:
您是否在docker容器中运行?
您使用的基本图像是什么?
您是如何启动容器的?您是手动启动它还是让EdgeAgent为您启动它

您可以尝试以下几点:

1) 确认您正在使用@modules预览代码。NPM很容易出错

PS F:\temp> npm list | findstr "azure-iot"
+-- azure-iot-device-mqtt@1.4.0-modules-preview
| +-- azure-iot-common@1.5.0-modules-preview
| +-- azure-iot-device@1.4.0-modules-preview
| | +-- azure-iot-http-base@1.3.3-modules-preview
| +-- azure-iot-mqtt-base@1.3.3-modules-preview
2) 验证连接字符串的格式是否正确。它需要有moduleId=和gatewayHostName=值。网关主机名应引用您的edgeHub主机


3) 验证EdgeModuleCACertificateFile中引用的证书文件是否存在,并且看起来像是有效的PEM文件(例如,包装在------开始证书------/----结束证书------中的文本文件,中间有一堆编码文本)

它在Docker容器中运行。基本图像节点:8.11.1-1。EdgeAgent正在启动容器。解决方案1解决了这个问题。谢谢