为什么node -v命令不能在windows上使用wsl2 Ubuntu 20.04



我在windows 11系统上安装了Ubuntu 20.04,但是我无法运行"节点-v">命令,就像我用powershell命令一样。

它说命令节点没有找到,但我可以在cmd上运行相同的命令,并在我的系统显示上安装节点版本。

请给出解决方案

一些评论简要地提到了这一点,但我认为它需要更详细的解释,并提供一些额外的信息来帮助您的WSL之旅。

首先,WSL允许您运行Windows可执行文件,但它需要完整的可执行文件名——例如,node.exe,假设它在您的路径中。否则,需要/mnt/c/path/to/node.exe

WSL还将Windows路径附加到Windows路径,并将其转换为Linux形式,因此您将自动找到如下内容:

  • /mnt/c/Windows
  • /mnt/c/Windows/System32
  • /mnt/c/Windows/System32/WindowsPowerShell/v1.0

…当你在WSL/Linux下echo $PATH时。这意味着您可以在WSL/Linux中以powershell.exe的身份运行PowerShell,甚至可以像powershell.exe -c "Get-Help" | less那样执行脚本和命令。嘿,终于- PowerShell下一个像样的呼机!: -)

也就是说,即使您可以在WSL下运行Windowsnode.exe,这样做也是一个坏主意。Windows版本的Node可以理解Windows驱动器、Windows路径和Windows网络接口。在WSL中运行时,shell将把Linux路径传递给Windows命令。

您可以使用wslpath命令(在某些WSL发行版中默认安装)来解决这个问题,但实际上,正如注释所指出的,如果您在WSL/Linux中运行,则应该安装Linux版本的Node。

我建议在您了解两者的区别之前选择其中一个,除非您有需要Windows版本,否则我建议您选择Linux路线。

这也意味着您应该将项目文件保存在WSL中,可能保存在Linux$HOME目录(即/mnt/username)下的目录中。至少对于WSL2,这有两个优点:

  • 更快的性能(如果你试图将它们保存在Windows驱动器上,Visual Studio Code甚至会警告你性能损失)
  • 通知对您启用自动监视/重新加载的项目的支持。当在WSL下工作时,这将不能与Windows驱动器上的文件一起工作,但可以在默认的WSL文件系统上工作。

最新更新