我正在使用node-twilio,并且"Error: Unable to reach host: "api.twilio.com"每次请求都得到一个。我们已经通过检查了数据包mtr,这些数据包已到达api.twilio.com。在GCE上运行debian。
经过数天的挖掘,发现node-twilio模块错误地显示了许多错误,如下所示:
“错误:无法访问主机:“ api.twilio.com”。
以下几行:
var error = null;
if (err || (response && (response.statusCode < 200 || response.statusCode > 206))) {
error = {};
// response is null if server is unreachable
if (response) {
error.status = response.statusCode;
error.message = data ? data.message : 'Unable to complete HTTP request';
error.code = data && data.code;
error.moreInfo = data && data.more_info;
} else {
error.status = err.code;
error.message = 'Unable to reach host: "'+client.host+'"';
}
}
Run Code Online (Sandbox Code Playgroud)
发生这种情况是因为您的链中有一个自签名证书,并且twilio依赖的基础模块is is request,它Error: SELF_SIGNED_CERT_IN_CHAIN引发以下错误:
但这不是node-twilio引发的错误(错误传播本身)
有2个修复程序:
1.通过设置以下内容告诉nodejs忽略链中的自签名证书:
export NODE_TLS_REJECT_UNAUTHORIZED=0
参考文献:
https://github.com/request/request
https://github.com/twilio/twilio-node/blob/45858420688854494c2ed476a1997773c33a32a0/lib/Client.js
使用https.request忽略node.js中无效的自签名ssl证书吗?