微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使Node.JS Express仅在localhost上侦听?

如何解决如何使Node.JS Express仅在localhost上侦听?

感谢您提供的信息,以为我看到了问题。这是一个错误hive-go,仅在添加主机时才会显示。最后几行是:

app.listen(3001);
console.log("... port %d in %s mode", app.address().port, app.settings.env);

当您在第一行添加主机时,调用时它会崩溃app.address().port

问题是的潜在异步特性.listen()。确实应该在console.log传递给侦听的回调中进行该调用添加主机时,它会尝试进行DNS查找,这是异步的。因此,当该行尝试获取地址时,由于DNS请求正在运行,因此没有地址,因此它崩溃了。

试试这个:

app.listen(3001, 'localhost', function() {
  console.log("... port %d in %s mode", app.address().port, app.settings.env);
});

解决方法

我有一个反向代理背后的应用程序,我希望它仅侦听localhost / 127.0.0.1.。

我希望这可以工作:

app.listen(3001,'localhost');

要么

app.listen(3001,'127.0.0.1');

…但是我得到一个错误:

node.js:201
    throw e; // process.nextTick error,or 'error' event on first tick
          ^
TypeError: Cannot read property 'port' of null
    at Object.<anonymous> (/home/ctoledo/hive-go/go.js:204:76)
    at Module._compile (module.js:441:26)
    at Object..js (module.js:459:10)
    at Module.load (module.js:348:31)
    at Function._load (module.js:308:12)
    at Array.0 (module.js:479:10)
    at EventEmitter._tickCallback (node.js:192:40)

在不指定主机名的情况下运行应用程序可以正常工作,即app.listen(3001);

我正在运行Node v0.6.14 和express @ 2.5.5 ,并阅读了此Google
网上论坛的
讨论,
并在Express
application.js中找到此注释,并说:“此方法与node的参数相同http.Server#listen()。”

谢谢你的帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。