NodeJS - 从 outside/LAN IP 访问服务器失败

NodeJS - Server access from outside/LAN IP is failed

我使用 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);
});

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

看看 ngrok 之类的东西,它应该可以为您处理公开端口,并使您提供 link 的任何人都可以访问它,只要他们连接到互联网即可。这可能有助于您构建应用程序并在部署之前在您的计算机和移动设备上快速测试它。

我解决这个问题的步骤:(感谢@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