Node.js 向sendgrid API发出请求时出现ETIMEDOUT错误

Node.js 向sendgrid API发出请求时出现ETIMEDOUT错误,node.js,request,sendgrid-api-v3,Node.js,Request,Sendgrid Api V3,我正在使用NodeJS请求模块通过sendgrid发送电子邮件。我正在找出错误。我打算使用节点重试npm模块重试发送,但如何检测错误代码?sendgrid API是否以某种方式返回错误代码?另外,当我检测到错误代码时,是否只需等待X秒即可再次发送电子邮件?如果是,我如何确定X是什么 _makeAPIRequest (httpMethod, url, body) { var defer = Q.defer(); var options = { method: htt

我正在使用NodeJS请求模块通过sendgrid发送电子邮件。我正在找出错误。我打算使用
节点重试
npm模块重试发送,但如何检测错误代码?sendgrid API是否以某种方式返回错误代码?另外,当我检测到错误代码时,是否只需等待X秒即可再次发送电子邮件?如果是,我如何确定X是什么

_makeAPIRequest (httpMethod, url, body) {
    var defer = Q.defer();
    var options = {
        method: httpMethod,
        url: this.SENDGRID_API_URL + url,
        headers: {
            'content-type': 'application/json',
            authorization: 'Bearer ' + SENDGRID_API_KEY
        },
        body: body,
        json: true
    };

    request(options, function (error, response, body) {
        if (error) {
            console.dir(error);
            return defer.reject(error);
        }
        defer.resolve(body);
    });
    return defer.promise;
}

ETIMEDOUT
是一条操作系统错误消息。它表示在TCP/IP级别连接到远程主机(可能是中提到的主机)的尝试失败

其默认值为
https://api.sendgrid.com/v3/
。出于某种原因,可能是出站防火墙或某种网络配置问题,您的nodejs程序无法访问该URL,并等待响应。您应该检查该URL的值

如果这是间歇性的(并非总是发生),您可能可以等待几秒钟,然后重试

如果在你发送了一大堆电子邮件之后,这种情况就开始发生了,那么你可能在sendgrid达到了一个极限。加快发送电子邮件的速度;试着在它们之间延迟半秒