在 WSL Ubuntu 20.04 上安装 npm 后,我收到消息"/usr/bin/env: ‘bashr’: No such file or directory"



从终端运行npm installnpm命令时,我看到以下消息。执行node按预期工作。

> npm install
/usr/bin/env: ‘bashr’: No such file or directory

2023年7月更新:Microsoft有一份使用NVM在WSL上安装Node的指南。如果你遵循他们的方法,你可能不会有这个问题。

对许多人有效的修复:这可能是一个导致问题的行结尾问题,但不是来自Ubuntu。确保正确安装了nodenpm

  1. 从WSL运行sudo apt install nodejs npm以安装node&npm
  2. 从PowerShell/CMD运行wsl --shutdown以重新启动WSL服务
  3. 从WSL运行which npm以确认已安装(输出应为:/usr/bin/npm)

问题是否持续存在?尝试下一个:

通过编辑WSL中的/etc/wsl.conf文件,停止与WSL共享Windows路径变量。如果文件不存在,请先执行sudo touch /etc/wsl.conf。使用命令sudo nano /etc/wsl.conf编辑文件,并添加以下配置:

[interop]
appendWindowsPath = false

然后在Windows中使用命令wsl --shutdown重新启动WSL2。

注意1:这将阻止PATH环境变量从Windows传递到WSL。已知错误:这会阻止VSCodecode .命令在WSL中工作。如果这是一个问题,请使用此处描述的NVM解决方案,或者切换到使用docker容器中的node

注意2:这也会影响pyenv命令,请参见/usr/bin/env:'bash\r':没有这样的文件或目录:不兼容的行结尾(WSL?)

来自@mike的提示:"我不想禁用执行code .的功能,所以我只是通过将这一行添加到我的~/.bashrc path=$(echo"$path&"| sed-e's%:/mnt/c/Program Files/nodjs%%")来删除windows nodejs路径;

我遇到了同样的问题,在安装nodejs和npm后,只需用wsl --shutdown重新启动我的wsl就可以解决问题,你可以试试这个。

我在同一个发行版上运行时也遇到了这个问题;版本在阅读了每个人的评论后,我认为首先尝试的最简单的解决方案是"关闭并再次打开",它奏效了!我在windows(而不是ubuntu)终端上运行了这个。

wsl --shutdown

Nodejs已经安装在WSL之外,所以我在WSL窗口中键入了NPM命令,并在Windows上实际调用了NPM。卸载Windows和WSL节点后,我在WSL中重新安装了NODE,没有问题

这听起来像是潜在的问题是您使用Nodejs Windows安装程序在线安装了节点。使用Linux的Windows子系统时,解决此问题的最简单方法是执行初始Nodejs安装,而不是使用Nodejs Windows安装程序,而是在WSL命令行上执行以下过程:

打开一个新的WSL终端

通过Ubuntu从互联网下载内容

$sudo apt-get-install curl

然后安装nvm(注意:检查最新版本的nvm并相应地替换到路径中;截至本文发布,v0.39.1是最新的):

$curl-o-https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh| bash

要验证nvm的安装(注意:您可能需要关闭并重新打开您的终端-应该返回"nvm"):

$command-v nvm

安装Node.js的当前稳定版本:

$nvm安装--lts

要确认您现在已经安装了节点和npm:

$node——版本&npm—版本

你应该看到这样的东西:

v16.16.0

8.11.0

卸载您当前的Nodejs安装并使用上面的方法重新安装可能是有益的。这将省去许多试图了解其他潜在解决方案的麻烦。注:以上解决方案仅适用于WSL。有关更多详细信息,请访问Microsoft文档。

我认为更好的解决方案是在WSL上使用nvm安装Node,这样就不会有这个问题。

使用nvm为Ubuntu 20.04 安装Nodejs和npm

今天我通过nvm更新了node和npm之后,就发生了这种情况。我意识到echo $PATH中确实缺少.nvm路径。然后我注意到npm use v16.14.0会将其重新添加到$PATH中,并使npm i再次工作。然而,这只适用于当前选项卡,为了使其在新的会话/选项卡中工作,我必须运行:

nvm alias default v16.14.0

npm可能安装在错误的位置(例如,在Windows而不是Ubuntu中)。要进行检查,请尝试运行which npm

我有一个类似的问题,我通过在运行后重新启动外壳来解决

$ sudo apt install npm

现在,当我运行时

$ which npm

给出:

/usr/bin/npm

这是一个使用NVM的解决方案,NVM是节点框架的版本管理器。建议解决方案:

在WSL中安装curl以从互联网下载:

sudo apt-get install curl

接下来获取NVM下载程序脚本并使用bash:运行它

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

接下来,安装NVM:的长期支持版本

nvm install --lts

最后,安装节点:

nvm install node

您可以在WSL文档中找到有关NVM的更多信息

您可以尝试以下任意一种:

source ~/.profilesource ~/.bashrc

接受的答案对我不起作用。我发现只是我有一些.js文件的行尾是Windows,而不是Linux。

解决这个问题最简单的方法是在我的项目文件夹中使用rm -rf node_modules && npm update来获得Linux版本。

您的windows机器中可能有其他版本的节点。

brew link node@<Your Version>brew link node

在我的案例中,sudo成功了。这个问题还没有解决,但至少目前,我可以继续前进

之前:

npm init -y

之后:

sudo npm init -y

最新更新