TL;DR
如果你通过nvm 管理节点,那么可能yarn 二进制文件的路径不包含在$PATH 变量中。你应该添加这个 -
# Add this at the end (or after the $NVM_DIR initialization)
# in your profile - .bashrc | .zshrc | .profile, etc
export PATH="`yarn global bin`:$PATH"
在您的配置文件末尾(对我来说是.zshrc)或至少在$NVM_DIR 初始化之后。
我最近遇到了这个问题,在寻找解决方案时,我来到了这里。
这是我的环境的样子:
- 操作系统:Ubuntu 20.04
- 壳牌:
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 安装的所有全局包的目录),如下所示:
# Top of my .zshrc file
export PATH="`yarn global bin`:$HOME/bin:/usr/local/bin:$PATH"
根据nvm 的installation instruction,$NVM_DIR(保存nvm 目录路径的变量)被添加到我的.zshrc 文件的末尾。
所以当我启动我的 shell 时,它实际上是在加载 $NVM_DIR 路径之前尝试加载 yarn 命令(存在于 nvm 目录中)。
为了解决这个问题,我调整了我的.zshrc 文件并将yarn global bin 命令移到$NVM_DIR 之后,如下所示:
# Top of my .zshrc file
export PATH="$HOME/bin:/usr/local/bin:$PATH"
# ...
#
# Something in between
#
# ...
# Bottom of my .zshrc file
export NVM_DIR="${HOME}/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
# Here is where I have added the path to yarn global
export PATH="`yarn global bin`:$$PATH"
我希望这会有所帮助。