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$
问题确定步骤将是:
- 从具有出站访问权限的计算机上ping目标服务器 – 确保服务器存在。 如果没有,解决这个问题。
- login到bluemixdebugging控制台
- ping你的目标服务器。 如果没有反应,bluemix和目标之间会有一堵墙。 如果它响应,请尝试这个testing用例。 如果这样也行,我们将不得不进一步debugging,我可以有更多的帮助。
Bluemixdebugging控制台通过以下方式获得:
- 导出值为“shell”的环境variables“BLUEMIX_APP_MGMT_ENABLE”
- 重新调整应用程序。
- 在https:// your-app-url / bluemix-debug / shell /中使用您的Bluemix用户凭证login到浏览器中的Web Shell
希望这可以帮助。