WSL2中Node.js服务localhost:5060无法访问问题求助
问题解决步骤
1. 修复Express代码错误
你的server.js存在语法错误,导致Express应用实例未正确初始化:
// 错误写法 const express = require("express")(); const app = express; // 正确写法二选一: // 写法一 const express = require("express"); const app = express(); // 写法二(更简洁) const app = require("express")();
错误原因:require("express")()已经返回Express应用实例,你却将app赋值为Express模块本身,而非该实例。这会导致app.get、app.listen调用不符合预期,服务实际未正常启动。
2. 确保服务监听0.0.0.0
WSL2网络与Windows主机隔离,默认Express仅监听WSL2内部的127.0.0.1,Windows主机无法直接访问。需修改app.listen的监听地址:
// 第三个参数指定监听所有网络接口,允许Windows主机访问 app.listen(process.env.PORT || 5060, '0.0.0.0', () => console.log("server running on port 5060..."));
3. 验证服务监听状态
在WSL2终端执行命令,确认服务是否监听0.0.0.0:5060:
netstat -tulpn | grep 5060
输出包含0.0.0.0:5060则监听正常;若为127.0.0.1:5060,说明仍仅监听WSL2内部。
4. 测试跨网络访问
- 获取WSL2的IP地址:在WSL2终端执行
hostname -I,得到类似172.18.xxx.xxx的地址 - 在Windows Chrome中访问
http://172.18.xxx.xxx:5060,若能打开,说明自动端口转发失效,可重启WSL2修复:
重启后重新启动Node服务,再尝试访问# 在Windows PowerShell中执行 wsl --shutdownlocalhost:5060。
5. 排除其他干扰项
- 卸载WSL2中的Apache,避免多余服务干扰网络栈
- 检查Windows端是否有其他应用占用5060端口:在PowerShell执行
netstat -ano | findstr :5060,若有结果,通过任务管理器根据PID结束对应进程
内容的提问来源于stack exchange,提问作者gabiii
相关产品推荐
相关产品推荐

