13

注意:还有一些其他人遇到过类似的问题,但是通过修复代码中涉及服务器如何侦听的小花絮来解决这些问题(在我看到的示例中,他们将 '127.0.0.1' 作为参数放入http.createServer(...).listen(). 但是,我没有同样的问题。

当我尝试从同一 LAN 网络上的另一台计算机连接到我的 node.js 服务器时,Chrome 说它无法连接。

这是 testtesttest.js

var http = require('http');

http.createServer(function(req,res) {
    res.writeHead(200,{'Content-Type': 'text/plain'});
    res.end('Working');
}).listen(3000);

当我尝试将192.168.1.73:3000(当然 192.168.1.73 是我正在运行服务器的机器的 ip)输入到我的另一台机器的浏览器(Chrome,虽然我也尝试过其他浏览器并且我有类似的问题)时,它给出错误“糟糕!Google Chrome 无法连接到 192.168.1.73:3000”。当我在本地机器上键入相同的地址时,它工作正常。

我不确定该怎么做。老实说,我希望这只是我的一个愚蠢的错误(我很抱歉可能会浪费您的时间),而不是我必须进入路由器的事情。

非常感谢您的帮助。

4

11 回答 11

34

尝试改变这个

.listen(3000);

对此

.listen(3000, "0.0.0.0");
于 2013-03-19T06:39:35.237 回答
15

只是把它放在这里以防它拯救其他人。尝试将手机连接到本地计算机时,我整整两天都遇到了这个问题……这是因为我手机上的 wifi 已关闭。

于 2015-07-04T12:38:58.673 回答
12

我也有这个问题。我通过在网络组中允许“node.js”解决了这个问题。


解决方案:允许“node.js”通过私网windows
防火墙 转到控制面板
b。转到 Windows 防火墙
c. 单击左侧边栏中的允许应用程序或功能通过 Windows 防火墙 d. 搜索“Node.js : Server Side JavaScript”并确保公共和私有列框都标记为“NodeJS” e。点击“确定”就完成了
单击左侧边栏中的*允许应用程序或功能通过 Windows 防火墙*
在此处输入图像描述

于 2018-01-15T20:29:19.353 回答
4

您必须打开 3000 端口,以便可以从远程计算机访问它。您可以在 iptables 文件中执行此操作。使用以下命令打开文件

vi /etc/sysconfig/iptables

现在在该文件中的拒绝行之前添加以下行

-A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT

现在使用以下命令重新启动 iptables 服务

service iptables restart

现在您重新启动服务器并重试。它应该工作..

于 2015-06-01T12:53:37.833 回答
3

以下是我遵循的步骤

我的服务器代码

var http=require('http');
http.createServer(function(request,response){
response.writeHead(200,{'Content-Type':'text/plain'});
response.end('Im Node.js.!\n');
console.log('Handled request');
}).listen(8080, "0.0.0.0");;
console.log('Server running a http://localhost:8080/');

添加了入站规则。

  1. 创建了一个 udp 入站规则(因为我找不到任何 http 协议)。
  2. 创建后,转到已创建规则的属性。
  3. 选择协议和属性选项卡。
  4. 在端口类型中选择任何一个。单击应用和确定。现在我在其他机器上试过了!!!

我认为您需要将 Port Type 设置为 any 才能使其正常工作。

谢谢

于 2014-12-15T13:18:25.580 回答
2

您的防火墙设置可能会阻止端口 3000 上的传入请求。您可能希望在此端口上添加防火墙入站规则以允许访问它。

于 2013-03-19T08:30:38.767 回答
1

我的问题是,我使用分配给我的以太网适配器而不是wifi 适配器的 IP ...

现在,当我从任何设备连接时,它就可以工作了。

于 2018-05-20T17:58:44.483 回答
1

对我来说,罪魁祸首是 VirtualBox Host-only 网络接口。此网络接口的存在导致ipconfig服务器报告 192.168.56.1 而不是路由器分配的地址 192.168.1.x。我一直在访问错误的IP。

要删除 VirtualBox Host-only 网络接口:

  1. 打开虚拟盒子
  2. File>Preference>Network>Host-only Networks
  3. 删除有问题的适配器
于 2017-08-20T17:28:45.130 回答
1
 http.createServer(function(req,res) {
    res.writeHead(200,{'Content-Type': 'text/plain'});
    res.end('Working');
 }).listen(3000, "192.168.1.36");

我在网络设置中找到了我的 IPv4 地址,然后用 listen fun 指定。还放了3000端口。我可以通过连接同一个 wifi 的平板电脑访问http://192.168.1.36:3000/ 。

于 2018-08-22T22:21:21.357 回答
0

你必须在终端上运行它:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

在这里解释

于 2015-02-19T21:51:07.370 回答
0

就像 Umamaheswaran 回答的那样,需要创建一个新的入站规则。但是我必须使用 TCP,而不是使用 UDP 协议。我的应用程序在 Windows Server 2012 上运行。入站规则在具有高级安全性的 Windows 防火墙中设置,在管理工具下

于 2016-09-28T07:15:36.967 回答