通过 npm 安装后找不到 yarn 命令
Posted
技术标签:
【中文标题】通过 npm 安装后找不到 yarn 命令【英文标题】:yarn command not found after installing via npm 【发布时间】:2021-05-01 16:47:41 【问题描述】:根据 yarn v2 的 yarn 安装,他们希望您使用 npm install -g yarn
安装。所以我在 Ubuntu 20.04 上运行了sudo npm install -g yarn
。但是在我这样做之后,它说找不到命令。
❯ sudo npm install -g yarn
> yarn@1.22.10 preinstall /usr/local/lib/node_modules/yarn
> :; (node ./preinstall.js > /dev/null 2>&1 || true)
❯ yarn --version
zsh: command not found: yarn
【问题讨论】:
在没有sudo
的情况下运行它。如果您的路径设置正确,那么这个问题是由于用户造成的。
【参考方案1】:
sudo npm install -g npm
然后
sudo npm install -g yarn
然后重新启动您的系统。 对我来说就是这样。 在重新启动之前,只有 sudo yarn 有效。我尝试查看文件权限,但一切似乎都井井有条,并且文件可以按预期执行。尽管如此,重启后它仍然有效。
如果您在安装后转到 /usr/local/bin,那里有一个指向 yarn.js 所在位置的链接,正如预期的那样,并且它的文件权限也是正确的。
/usr/local/bin 被添加到 $PATH 中,所以令人惊讶的是它没有立即看到新的 cmd,但也许它直到重新启动后才重新加载或映射它?我不知道。但我只是花了一个小时试图弄清楚这一点,所以我发布了对我有用的东西,以免其他人麻烦。
【讨论】:
对于未来的观众,我在执行此操作之前删除了位于 appdata/roaming 中的 npm 和 npm_cache,因为即使此修复程序也没有为我解决问题。删除后,我运行这些命令,重新启动我的电脑,瞧,问题解决了。【参考方案2】:如果您想避免重新启动,请使用
/usr/local/lib/node_modules/yarn/bin/yarn --version
【讨论】:
【参考方案3】:卸载cmdtest
:
sudo apt remove cmdtest
然后,运行以下命令:
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt install yarn
【讨论】:
【参考方案4】: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"
我希望这会有所帮助。
【讨论】:
【参考方案5】:yarn 文档缺少一个步骤,您需要在此安装和运行yarn --version
之间重新启动计算机。
这对我有用
【讨论】:
以上是关于通过 npm 安装后找不到 yarn 命令的主要内容,如果未能解决你的问题,请参考以下文章