NodeJS - 来自外部/ LAN IP的服务器访问失败

时间:2017-12-13 15:50:44

标签: node.js express lan

我使用ExpressJS制作了一个演示应用程序。

在系统中通过POSTMAN访问API工作正常。但我无法使用我的移动浏览器访问相同的内容,其中移动和服务器系统都连接到同一个wifi。

我的server.js代码:

const express = require('express');
const bodyParser = require('body-parser');
const app = express();

app.listen(3000, "0.0.0.0", function() {
    console.log("Listening on Port 3000");
});

app.get('/server/identify', function(req, res) {
    console.log(req.body);
    var data = {
        "meta": {
            "status": "success",
            "message": "Server is running"
        }
    };
    res.json(data);
});

2 个答案:

答案 0 :(得分:2)

您需要在本地网络上公开端口3000,然后使用它的本地网络IP地址访问该计算机。除非您的机器上已打开端口,否则任何人都无法访问它。

看看像ngrok这样的内容,这应该可以处理为您公开一个端口,并且只要他们连接到互联网,您就可以访问链接的任何人。这可能有助于您在部署应用程序之前构建应用程序并在计算机和移动设备上快速测试它。

答案 1 :(得分:0)

我解决此问题的步骤:(感谢@Elliot Blackburn)

Windows Firewall > Advanced Settings > Inbound rules > New Rule >

Port > Provide port number (in my case 3000) > Select "Allow the Connection" >

Select all (Domain, private and public) > Provide Name and Description > FINISH

(In command prompt)
>> node server.js
Server running in port 3000

[可选]使用ngrok.exe(无需安装)

(In command prompt)
>> node server.js
Server running in port 3000

>> ngrok http 3000

ngrok by @inconshreveable

Session Status                online
Version                       2.2.8
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://92a8b6b1.ngrok.io -> localhost:3000
Forwarding                    https://92a8b6b1.ngrok.io -> localhost:3000

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00