无法从不同的网络express.js连接

时间:2016-09-10 18:33:52

标签: javascript node.js express networking

我正在尝试使用node.js和express.js。

当我尝试从网络中的任何计算机连接到我的Web服务器时,它可以正常工作,但是当我尝试从外部网络连接时,连接超时。

var app = require('express')();
var http = require('http').Server(app);
app.get('/', function(req, res) {
    res.send("Hello World");
});
http.listen(3000, '0.0.0.0', function() {
    console.log("Listening on port 3000!");
});

2 个答案:

答案 0 :(得分:2)

我刚刚测试了您的代码,我可以通过导航到我的本地网络外部来访问服务器:

http://173.0.[my].[ip]:3000

所以代码是正确的。可能需要向外界打开端口3000。以下是如何实现的。

通过您的路由器管理界面

这里以我的为例:

Single port forwarding

192.168.1.130 是PC的本地IP,我正在运行http服务器。

请勿忘记点击该界面中的保存设置按钮以应用更改。

使用ngrok之类的工具(由eddiezane提及)

使用ngrok节点包装器通过他们的网站安装ngrok或不离开命令提示符。

npm install ngrok -g

启动您的http服务器,然后运行:

ngrok http 3000

导航到Forwarding前面的其中一个网址:

ngrok http forward port 3000

免费版本更适合快速测试,而不是作为在生产环境中公开服务的明确方式,因为每次重新启动ngrok时,都会给您一个新的user-hostile网址。

其他可能的问题

  • 也可能需要向防火墙添加例外(如果在Windows上)。

答案 1 :(得分:1)

要添加到Emile的答案,我会查看ngrok这是一个很棒的工具,可以为您的本地计算机上的端口生成一个可公开访问的URL。

我的好友写道,这是一个很好的blog post