getting Error: getaddrinfo ENOTFOUND while performing rest api call in node.js using http.request
getting Error: getaddrinfo ENOTFOUND while performing rest api call in node.js using http.request
我在 node.js 中创建了 api,它消耗了 http://dev.abc.co.in:20081 中托管的一组 api
不是每次都会随机抛出错误
Error: getaddrinfo ENOTFOUND dev.abc.co.in
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:60:26) {
errno: 'ENOTFOUND',
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'dev.abc.co.in'
}
调用那些 api 我使用了请求节点模块,因为我开始收到此错误我切换到 fetch-node npm 模块并最终用内部节点模块 http 替换代码但得到相同的错误
这是我使用 http.request
编写的代码
try{
const options = {
hostname: "dev.abc.co.in",
port : 20081,
path: "/api/entity/workorder",
method: Config.method
};
if(Config.headers){
options.headers = Config.headers
}
const req = http.request(options, (res) => {
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('end', () => {
callback(res, data);
});
req.socket.destroy();
}).on("error", (err) => {
console.log("===Error: ", err);
callback(null, err);
});
if(Config.method!="GET" && Config.body){
Config.headers["Content-Length"] = Config.body.length;
req.write(Config.body);
}
req.end();
}catch(e){
console.log("Exception=====",e);
}
如与 DNS 相关的错误消息问题所示,因此我尝试使用以下方法解决此 DNS
node -pe 'require("dns").lookup("dev-vsg.dovertech.co.in",function(){console.dir(参数)})
但仍未解决。
1) 省略域名开头的 'http://' 和结尾的所有斜杠或实际域之后的任何路径。
2) 尝试 resolve your hostname:
const dns = require('dns');
dns.resolve("testdomain.com", 'ANY', (err, records) => {
if (err) {
console.log("Error: ", err);
} else {
console.log(records);
}
});
如果返回了dns记录,那么你就知道是node js的问题,之后我们可以进一步排查。如果不是,那就是域配置问题。
我在 node.js 中创建了 api,它消耗了 http://dev.abc.co.in:20081 中托管的一组 api 不是每次都会随机抛出错误
Error: getaddrinfo ENOTFOUND dev.abc.co.in
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:60:26) {
errno: 'ENOTFOUND',
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'dev.abc.co.in'
}
调用那些 api 我使用了请求节点模块,因为我开始收到此错误我切换到 fetch-node npm 模块并最终用内部节点模块 http 替换代码但得到相同的错误
这是我使用 http.request
编写的代码try{
const options = {
hostname: "dev.abc.co.in",
port : 20081,
path: "/api/entity/workorder",
method: Config.method
};
if(Config.headers){
options.headers = Config.headers
}
const req = http.request(options, (res) => {
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('end', () => {
callback(res, data);
});
req.socket.destroy();
}).on("error", (err) => {
console.log("===Error: ", err);
callback(null, err);
});
if(Config.method!="GET" && Config.body){
Config.headers["Content-Length"] = Config.body.length;
req.write(Config.body);
}
req.end();
}catch(e){
console.log("Exception=====",e);
}
如与 DNS 相关的错误消息问题所示,因此我尝试使用以下方法解决此 DNS node -pe 'require("dns").lookup("dev-vsg.dovertech.co.in",function(){console.dir(参数)}) 但仍未解决。
1) 省略域名开头的 'http://' 和结尾的所有斜杠或实际域之后的任何路径。
2) 尝试 resolve your hostname:
const dns = require('dns');
dns.resolve("testdomain.com", 'ANY', (err, records) => {
if (err) {
console.log("Error: ", err);
} else {
console.log(records);
}
});
如果返回了dns记录,那么你就知道是node js的问题,之后我们可以进一步排查。如果不是,那就是域配置问题。