我在 Windows 10(版本 10.0.19044 Build 19044)主机操作系统上运行了 WSL 2 中的 Ubuntu。
Windows Defender 防火墙已完全禁用。
什么有效
非常基本的Express 应用程序
index.js
:const express = require('express') const app = express() const port = 3000 app.get('/', (req, res) => { res.send('Hello World!') }) app.listen(port, () => { console.log(`Example app listening on port ${port}`) })
在 WSL 内部,我运行
npm init
,npm i express
最后运行node index.js
。然后在主机操作系统的浏览器中访问 http://localhost:3000 并看到“Hello World!”。
其他 Node 应用程序(例如 EmberJS):
npx ember-cli -- new foo cd foo/ npm start
这将在 WSL 内部的 4200 端口上启动一个开发服务器。
然后在主机操作系统的浏览器中访问 http://localhost:4200 并看到一个样板应用程序。
什么不起作用
(当然,我首先确保端口可用)
运行节点
http-server
:我
npx http-server -p 3000
从 WSL 内部开始。我在主机操作系统中访问 http://localhost:3000。尽管使用与之前相同的端口和主机,但我看到“连接被拒绝”。
从 WSL 内部,页面确实打开了(例如使用
links http://localhost:3000
)。运行 Python HTTP 服务器:
我
python3 -m http.server 4200
从 WSL 内部开始。我在主机操作系统中访问 http://localhost:4200。尽管使用与之前相同的端口和主机,但我看到“连接被拒绝”。
从 WSL 内部,页面确实打开了(例如使用
links http://localhost:4200
)。使用 运行无头 Chrome
--remote-debugging-port
。主机操作系统上的 Chrome 无法连接到 WSL 中的无头 Chrome。
我尝试过
以下两种方法都无济于事:
- 正在重新启动。
wsl --shutdown
。- 谷歌搜索。很多次。
笔记
例如,当我启动时npx http-server -p 4200
,主机操作系统的资源监视器的网络选项卡中会出现一个条目。它显示端口4200
、进程wslhost.exe
、防火墙状态“允许,不受限制”。
然而,我看到的是这样的:
更新 1:我去过
答案1
该问题是由 Surfshark VPN 引起的,无论是否连接。
从主机操作系统上卸载 Surfshark 并重新启动解决了我的问题。