从 WSL 运行 Express 服务器(不支持 UNC 路径)

问题描述 投票:0回答:5

我正在尝试从 Visual Studio Code 中的 WSL 终端运行 Express 服务器。

但是,每当我运行命令

npm run dev
时,我都会收到以下错误:

'\\wsl$\Ubuntu\home\simao\legalize-backend'
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported.  Defaulting to Windows directory.

我认为这与从Windows到WSL目录中的文件夹的路径有关。

哪一种是正确的路径格式,或者我应该怎样做才能使该格式有效?

搜索发现可以

You can solve this problem (UNC Paths not supported) by mapping a
normal drive letter to the path that has the UNC path.

但是如何将普通驱动器号映射到路径?

windows-subsystem-for-linux
5个回答
8
投票

我昨天也遇到了同样的情况。我想可能是我的 npm 有问题。然后我用

which npm
检查了npm路径,发现我的npm在Windows中安装了
D:\nodejs\npm
(屏幕上就是
/mnt/d/nodejs/npm
)。

我猜 WSL 使用 CMD.exe 从 Windows 启动 npm,如

CMD.EXE was started with the above path as the current directory.

中所述

所以也许我可以在 WSL 中安装一个新的 npm 来解决这个问题。节点版本管理器 (nvm) 是安装多个版本 Node.js 的最流行方法。每个版本的nodejs都有自己的npm版本。只需点击下面的链接即可。

安装 nvm、node.js 和 npm

另外,如果您有

Permission denied
,请使用
npm uninstall xxx
删除已安装的依赖项,然后再次安装您的依赖项。


6
投票

我遇到的错误是因为我的 ubuntu wsl 试图在我的 Windows 上使用 npm install,以验证它执行命令:

which npm # output = /mnt/c/ubuntu/...

预期的输出应该类似于 /usr/local7....

解决方案直接在ubuntu上安装npm,可以使用nvm来完成:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | tried
source ~/.bashrc

准备好,你可以毫无问题地运行 npm


4
投票

发生这种情况是因为无论您使用的任何工具都试图通过

cmd.exe
cmd.exe
运行命令,都无法理解 UNC 路径(以
\\...
开头而不是驱动器盘符)。将 UNC 路径映射到驱动器会将其转换为驱动器号路径。

要将 WSL 路径映射到 Windows 驱动器,请运行

cmd.exe
(命令行)并键入以下命令:

net use X: \\wsl$\Ubuntu\home\simao

其中

X:
是将要创建的驱动器(您将在例如我的电脑中将其视为网络驱动器),而
\\wsl$\Ubuntu\home\simao
是该驱动器根目录的 WSL 路径。
wsl$
是告诉 Windows 连接到 WSL 的特殊主机名,
Ubuntu
是 WSL 下的发行版名称,最后
\home\simao
Ubuntu
发行版中应映射的目录路径。


-1
投票

我也有这个错误。确保在 Ubuntu 上安装了 Node 和 npm 后,当我运行

npm run dev
时仍然收到错误。

我意识到我处于虚拟环境中,所以在虚拟环境之外的另一个终端窗口中运行

npm run dev
,它终于成功了。


-1
投票

您正在Windows上使用nodejs npm, 尝试直接在wsl中安装,

当你点击 npm run 时,它首先进入 windows npm, 尝试从 Windows 中删除 npm 并将其安装在 wsl ubuntu 或其他什么中。 这将强制 wsl 使用其 npm 安装。

我尝试了这个解决方案,它对我来说正确有效。

我在 Windows 11 中使用 wsl Debian。

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.