linux的windows子系统从WSL运行express服务器(不支持UNC路径)



我正试图在VS Code中从WSL终端运行express服务器。

然而,每当我运行命令npm run dev时,我都会收到以下错误:

'\wsl$Ubuntuhomesimaolegalize-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.

但是,如何将正常的驱动器号映射到路径?

我昨天也遇到了同样的情况。我想可能是我的npm出了问题。然后我用which npm检查了npm路径,发现我的npm在Windows中安装了D:nodejsnpm(屏幕中正好是/mnt/d/nodejs/npm(。

我猜WSL使用CMD.exe从CMD.EXE was started with the above path as the current directory.中描述的Windows启动npm

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

安装nvm、node.js和npm

此外,如果您有Permission denied,请使用npm uninstall xxx删除已安装的依赖项,然后重新安装依赖项。

发生这种情况的原因是,无论您使用什么工具试图通过cmd.execmd.exe运行命令,都无法理解UNC路径(以\...而非驱动器号开头的路径(。将UNC路径映射到驱动器会将其转换为驱动器号路径。

要将WSL路径映射到Windows驱动器,请运行cmd.exe(命令行(并键入以下命令:

net use X: \wsl$Ubuntuhomesimao

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

我的错误是因为我的ubuntu wsl试图在我的窗口上使用npm安装,以验证它执行命令:

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没有问题

最新更新