我在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文件系统上工作。