通过 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 命令的主要内容,如果未能解决你的问题,请参考以下文章

在 zsh 中安装 npm 后找不到命令

安装 @vue/cli 后找不到命令

npm install yarn 未安装/找不到命令

yo 在 yarn global add generator-jhipster 后找不到 jhipster

安装后找不到异步

sh: react-scripts: 运行 npm start 后找不到命令