在WSL上运行Express服务器(不支持UNC路径)。

6

我正在尝试在VS 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.

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

4个回答

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来解决这个问题。Node Version Manager (nvm)是安装多个版本的Node.js的最流行方式。每个nodejs版本都有自己的npm版本。只需按照下面的链接操作即可。

安装nvm、node.js和npm

另外,如果你遇到了Permission denied,请使用npm uninstall xxx删除已安装的依赖项,然后重新安装依赖项。


5
我遇到的错误是因为我的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。

在WSL中使用sudo apt install npm安装npm解决了问题。 - undefined

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发行版中的目录路径。


错误:系统错误 67 已发生。找不到网络名称。 - Sh eldeeb
@Sheldeeb 当你的Windows网络配置错误或系统策略禁止映射驱动器时,就会出现这个错误。我的解决方案依赖于此。 - blami
2
在这些配置中到底出了什么问题?或者我应该检查什么? - Sh eldeeb

-1
我也遇到了这个错误。在确保在Ubuntu上安装了node和npm之后,当我运行npm run dev时,仍然出现错误。
我意识到我处于一个虚拟环境中,所以在另一个终端窗口中,在虚拟环境之外运行npm run dev,最终问题得到解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接