Bluemix NodeJS ENOTFOUND

时间:2016-04-26 18:39:48

标签: node.js ibm-cloud getaddrinfo

我有一个与服务器通信的bluemix节点js应用程序。我有测试和生产环境。在开发环境中,我们与测试服务器进行通信,我得到一个节点js错误。

当我将服务器URL更改为生产服务器时,一切正常。

当我在localhost上运行应用程序并连接到测试服务器时,一切正常。

所以我的问题只出在与我公司测试服务器通信的bluemix环境中。错误是:

{
  "code": "ENOTFOUND",
  "errno": "ENOTFOUND",
  "syscall": "getaddrinfo",
  "hostname": "www.xxxxxxxxx.cz"
} 

屏蔽了错误的主机名。

1 个答案:

答案 0 :(得分:2)

从例外情况来看,我认为失败的代码正在进行dns查找。我编写了这个示例代码,发现错误类似或相同。

var dns = require('dns');
dns.lookup('non-existent server', function(e, a) {
 console.log(e);
});

输出是:

bash-4.1$ node h.js
{ [Error: getaddrinfo ENOTFOUND non-existent server]
  code: 'ENOTFOUND',
  errno: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'non-existent server' }
bash-4.1$

问题确定步骤如下:

  1. 从具有出站访问权限的计算机ping您的目标服务器 - 以确保服务器存在。如果没有,请解决该问题。
  2. 登录bluemix调试控制台
  3. ping您的目标服务器。如果它没有响应,则在bluemix和目标之间有一堵墙。如果它响应,请尝试此测试用例。如果这也有效,我们将不得不进一步调试,我可以提供进一步的帮助。
  4. 通过以下方式获取Bluemix调试控制台:

    1. 导出环境变量" BLUEMIX_APP_MGMT_ENABLE"有价值" shell"
    2. 重新启动应用。
    3. 使用您的Bluemix用户凭据登录https://your-app-url/bluemix-debug/shell/浏览器中的Web shell
    4. 希望这有帮助。