在 WSL2 中:安装了适用于 Windows 10 nodejs 的 Ubuntu 20.04,但 npm 不起作用

Md.*_*man 7 node.js npm windows-10 windows-subsystem-for-linux ubuntu-20.04

我在Windows 10操作系统中使用WSL2:Ubuntu 20.04。当我执行命令时,我已使用该命令进行安装,我得到nodejssudo apt-get install -y nodejsnode -vv12.18.3

mrd@DESKTOP-2EO5K4H:/mnt/c/Users/musfi$ node -v
v12.18.3

但是当我执行npm -v命令时,我得到以下命令

mrd@DESKTOP-2EO5K4H:/mnt/c/Users/musfi$ npm -v
-bash: /mnt/c/Program Files/nodejs/npm: /bin/sh^M: 错误的解释器: 没有那个文件或目录

我也做whereis指挥。希望这将有助于找到解决方案。

mrd@DESKTOP-2EO5K4H:/mnt/c/Users/musfi$ whereis 节点
节点:/usr/bin/node /usr/include/node /mnt/c/Program Files/nodejs/node.exe /usr/share/man/man1/node.1.gz

mrd@DESKTOP-2EO5K4H:/mnt/c/Users/musfi$ whereis npm
npm: /usr/bin/npm /mnt/c/Program Files/nodejs/npm /mnt/c/Program Files/nodejs/npm.cmd /usr/share/man/man1/npm.1

我已经尝试了几乎所有的 stackoverflow 解决方案和 github 问题,但没有任何效果对我有用。
希望任何善良的灵魂都能解决这个问题。提前致谢。

Jat*_*tra 17

尝试这个

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
sudo apt install npm
Run Code Online (Sandbox Code Playgroud)

  • 它已经奏效了。你能向我解释一下你导出的是哪个路径吗?问题出在哪里? (3认同)
  • PATH 是 env 变量,它告诉在哪里查找命令,在您的情况下,npm bin 不在正确的路径。 (2认同)
  • 唯一可以在整个互联网上运行的东西,包括聊天 GPT。谢谢你! (2认同)

Kid*_*ang 17

更好的方法是/etc/wsl.conf在 Windows 用户目录中进行配置。

将其添加到 中/etc/wsl.conf,这样 Windows 路径将不会优先

[interop]
appendWindowsPath=false
Run Code Online (Sandbox Code Playgroud)

有关更多配置详细信息,请查看此处的Microsoft 开发博客。


Sub*_*aul 8

以下错误的解决方案: -bash: /mnt/c/Program Files/nodejs/npm: /bin/sh^M: bad interpreter: No such file or directory

编辑~/.bashrc 在文件末尾追加:

# strip out problematic Windows %PATH%
PATH=$(echo "$PATH" | sed -e 's/:\/mnt.*//g')
Run Code Online (Sandbox Code Playgroud)

现在npm init可以工作了。


Stu*_*all 7

nodejs在 WSL 中安装,请不要apt遵循 Microsoft 的指导:

nodejs如果您通过以下方式安装,另请参阅如何删除apt

要在WSL1npm下工作:


WSL2 注意事项

注意:如果您使用 VPN,您的容器连接可能会在 WSL2 下中断(例如使用 Cisco AnyConnect) - 该修复有效,但在 AnyConnect 下可能不再需要(在 7 月底最近更新后,VPN 上的 WSL2 现在对我有用) 2022)

我以为我的 WSL 容器在 WSL2 下运行(我使用 升级了 WSL 内核wsl --update) - 在使用 WSL 设置 Visual Studio 时,我看到了 WSL1 警告。您还必须升级容器:

wsl --set-version ubuntu-22.04 2
wsl --set-default-version 2
Run Code Online (Sandbox Code Playgroud)

为了让 Visual Studio 与22.04WSL 中的 Ubuntu 集成正常工作,您当前还必须升级才能在 WSL 中gzip安装(在 Linux 终端中):VS Code Server for x64code .:

wget http://ftp.debian.org/debian/pool/main/g/gzip/gzip_1.12-1_amd64.deb
sudo dpkg -i ./gzip_1.12-1_amd64.deb
Run Code Online (Sandbox Code Playgroud)

最后我升级了npm并且一切正常(选择以下命令之一):

  • nvm install-latest-npm
  • npm install -g npm@latest

Azure AD/CLI 注释

如果您使用nodejsAzure Active Directory,似乎会出现azure-cli忘记 WSL1/WSL2 下的凭据并不断告诉您的问题az login。在这种情况下,您需要local在 Windows 上运行节点开发实例。