TL;DR
如果你通过nvm
管理node,那么yarn二进制文件的路径可能没有包含在$PATH
变量中。你应该添加这个路径 -
export PATH="`yarn global bin`:$PATH"
在你的配置文件末尾(对于我来说是.zshrc
),或者至少在$NVM_DIR
初始化之后添加以下内容。
最近我遇到了这个问题,在寻找解决方法时,我来到了这里。
这是我的环境:
- 操作系统:Ubuntu 20.04
- Shell:
zsh
- NodeJS:通过
nvm
管理,而非apt
。
经过查看所有答案后,我不想卸载任何软件。所以我试图深入了解一些信息。
我通过npm install -g yarn
命令安装了yarn
。因此,我想要验证的第一件事是yarn
二进制文件的位置。为了做到这一点,我运行了where yarn
命令,它列出了yarn
二进制文件的安装路径。
$ where yarn
/home/<user_name>/.nvm/versions/node/v16.11.1/bin/yarn
然后我想到了一个办法。在我的.zshrc
文件中,我在顶部添加了yarn global bin
命令(它会列出由yarn安装的所有全局包的目录),如下所示:
export PATH="`yarn global bin`:$HOME/bin:/usr/local/bin:$PATH"
根据
nvm 的安装指南,我在我的
.zshrc
文件的结尾添加了包含
nvm
目录路径的变量
$NVM_DIR
。因此,在启动shell时,它实际上尝试加载
$NVM_DIR
路径之前就加载了
nvm
目录中存在的
yarn
命令。
为了解决这个问题,我调整了我的.zshrc
文件,并将yarn global bin
命令移动到$NVM_DIR
之后,像这样:
export PATH="$HOME/bin:/usr/local/bin:$PATH"
export NVM_DIR="${HOME}/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
export PATH="`yarn global bin`:$$PATH"
希望这可以有所帮助。
sudo
运行它。如果您的路径设置正确,则此问题是由用户引起的。 - Hamza Anis