获取错误:getaddrinfo ENOTFOUND在节点中执行rest api调用.js使用http.request



我在 node 中创建了 API.js它使用托管在 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 相关的错误消息问题所示,所以我尝试使用 node -pe 'require("DNS"(.lookup("dev-vsg.dovertech.co.in",function(({console.dir(arguments(}( 但仍然没有解决。

1(省略demain开头的"http://",以及结尾或实际域后的任何路径的所有斜杠。

2( 尝试解析您的主机名:

const dns = require('dns');
dns.resolve("testdomain.com", 'ANY', (err, records) => {
  if (err) {
    console.log("Error: ", err);
  } else {
    console.log(records);
  }
});

如果返回了 dns 记录,那么您将知道这是一个节点 js 问题,之后我们可以进一步调查。如果不是,则为域配置问题。

最新更新