从终端运行npm install
或npm
命令时,我看到以下消息。执行node
按预期工作。
> npm install
/usr/bin/env: ‘bashr’: No such file or directory
2023年7月更新:Microsoft有一份使用NVM在WSL上安装Node的指南。如果你遵循他们的方法,你可能不会有这个问题。
对许多人有效的修复:这可能是一个导致问题的行结尾问题,但不是来自Ubuntu。确保正确安装了node
和npm
:
- 从WSL运行
sudo apt install nodejs npm
以安装node&npm - 从PowerShell/CMD运行
wsl --shutdown
以重新启动WSL服务 - 从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 ~/.profile
或source ~/.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