Nodejs程序访问不到
Nodejs程序访问不到
lz在虚拟机上搭了node,用的编译好的文件,放到/usr/local下,然后在.bashrc下将lib和node_moudle加入变量里, 在/home/和/usr/local/node下建立example.js
var http=require('http') ;
http.createServer(function (req,res){
res.writeHead(200,{'Content-Type':'text/plain'});
res.end('Hello world\n');
}).listen(1337,'127.0.0.1');
console.log('server');
运行也不报错,然后在本地就是访问不到(ip和端口都对)
这是怎么回事?
ps:这网站注册页面都给我弄晕了,一共就俩键,一个github,一个关联旧帐号,不懂啥意思
curl -i http://127.0.0.1:1337/ 看看
HTTP/1.1 200 OK
Content-Type: text/plain
Date: Tue, 22 Jul 2014 23:19:38 GMT
Connection: keep-alive
Transfer-Encoding: chunked
Hello world
哦,说明能运行,但为啥本地访问不到呢,我用go写的都能访问到
service iptables stop解决
根据你的描述,你的 Node.js 程序没有在本地访问到。以下是一些可能的原因和解决方法:
-
监听地址问题: 你当前的代码中,服务器只监听了
127.0.0.1
,也就是 localhost。如果你希望从外部访问,应该使用0.0.0.0
来监听所有网络接口。var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello world\n'); }).listen(1337, '0.0.0.0'); // 监听所有网络接口 console.log('Server is running on port 1337');
-
防火墙设置: 确保虚拟机上的防火墙允许外部访问该端口(1337)。你可以临时关闭防火墙来测试是否是防火墙的问题:
- 在大多数 Linux 发行版中,可以使用以下命令临时关闭防火墙:
sudo systemctl stop firewalld
或者添加规则允许特定端口:
sudo firewall-cmd --zone=public --add-port=1337/tcp --permanent sudo firewall-cmd --reload
- 在大多数 Linux 发行版中,可以使用以下命令临时关闭防火墙:
-
检查虚拟机网络配置: 如果你在虚拟机上运行 Node.js,确保虚拟机的网络配置正确,并且允许与宿主机或其他网络设备通信。通常,虚拟机应配置为桥接模式或 NAT 模式。
-
查看日志和错误信息: 尝试在命令行中运行 Node.js 程序,而不是通过其他方式启动,这样可以看到任何潜在的错误信息。
node /home/your-user/example.js
-
检查环境变量: 确保
.bashrc
文件中的环境变量配置正确。你可以通过以下命令验证环境变量是否生效:echo $PATH echo $NODE_PATH
以上步骤可以帮助你排查问题。如果仍然无法解决问题,请提供更多关于你的虚拟机环境和网络配置的信息。