Bluemix NodeJS ENOTFOUND

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

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

当我在本地主机上运行应用程序并连接到testing服务器时,一切都可以。

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

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

错误的主机名被掩盖。

从例外情况来看,我认为失败的代码是在做一个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. login到bluemixdebugging控制台
  3. ping你的目标服务器。 如果没有反应,bluemix和目标之间会有一堵墙。 如果它响应,请尝试这个testing用例。 如果这样也行,我们将不得不进一步debugging,我可以有更多的帮助。

Bluemixdebugging控制台通过以下方式获得:

  1. 导出值为“shell”的环境variables“BLUEMIX_APP_MGMT_ENABLE”
  2. 重新调整应用程序。
  3. 在https:// your-app-url / bluemix-debug / shell /中使用您的Bluemix用户凭证login到浏览器中的Web Shell

希望这可以帮助。