【问题标题】:Azure Websites node.js http requests failingAzure 网站 node.js http 请求失败
【发布时间】:2013-05-24 10:16:15
【问题描述】:

我正在尝试使用 node.js 和 git 部署的 Azure 网站的免费层。它非常流畅,但我试图在我的一个处理程序中对 Facebook 进行 Web 服务调用,但它失败并出现 500 内部服务器错误和以下堆栈跟踪:

Application has thrown an uncaught exception and is terminated:
Error: connect EADDRNOTAVAIL
at errnoException (net.js:670:11)
at connect (net.js:548:19)
at Socket.connect (net.js:613:5)
at Object.<anonymous> (net.js:77:12)
at new ClientRequest (http.js:1091:25)
at Object.request (http.js:1427:10)
at Object.get (http.js:1432:21)

代码在本地运行时运行良好。这是 Azure 网站的限制,还是有其他方法可以做到这一点?我的代码如下所示(我使用的是 express):

app.get('/login', function (req, res) {
  var tokenUrl = 'http://foo.com';
  var body = '';
  http.get(tokenUrl, function (tokenRes) {
    tokenRes.on('data', function (chunk) {
      body += chunk;
    }).on('end', function () {
      res.end(body);
    });
  }).on('error', function (err) {
    console.log('Error fetching site: ' + err.message);
  });
}

【问题讨论】:

  • 对我来说似乎是服务器设置问题。请确保您确实可以绑定到服务器中的端口。
  • 您能否发布您的 app.js 文件的其余部分以便我们查看?
  • 您的服务器应该运行的端口在此环境变量上可用:process.env.port
  • @RichardAstbury 当他收到错误消息时,他正在拨打外线电话。大概监听流量工作正常,因为他到达了这个处理程序。
  • 我遇到了同样的错误。这里有限制吗?

标签: node.js azure


【解决方案1】:

所以我遇到了同样的问题,但调用了 https.get()。从 https.get() 切换到 https.request() 为我解决了这个问题。鉴于 http.get() 在本地对我来说工作得很好,这似乎有点疯狂。我很害怕知道这里发生了什么:(

【讨论】:

    【解决方案2】:

    是的,我也遇到过这个问题。 @Steven lckman 的回答对我不起作用。


    嘿,@Alec Siu,我已经解决了这个问题。 Azure 建议使用请求模块来发出 http 请求。见here。但没有给出理由。无论如何,它运作良好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-07
      • 2016-09-17
      • 2016-09-07
      • 2014-11-19
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多