通过npm安装后找不到yarn命令

ccl*_*oyd 26 javascript ubuntu node.js npm hadoop-yarn

根据yarn v2 的yarn 安装,他们希望您使用npm install -g yarn. 所以我sudo npm install -g yarn在 Ubuntu 20.04 上运行。但我这样做后,它说找不到命令。

\n
\xe2\x9d\xaf sudo npm install -g yarn\n\n> yarn@1.22.10 preinstall /usr/local/lib/node_modules/yarn\n> :; (node ./preinstall.js > /dev/null 2>&1 || true)\n\n\n\xe2\x9d\xaf yarn --version\nzsh: command not found: yarn\n
Run Code Online (Sandbox Code Playgroud)\n

dec*_*vre 38

sudo npm install -g npm
Run Code Online (Sandbox Code Playgroud)

然后

sudo npm install -g yarn
Run Code Online (Sandbox Code Playgroud)

然后重新启动系统。那对我来说是这样的。在重新启动之前,只有 sudo 纱线可以工作。我尝试查看文件权限,但一切似乎都按顺序进行,并且文件可以按预期执行。不过重启后就成功了。

如果您在安装后转到 /usr/local/bin ,那么那里有一个指向yarn.js 所在位置的链接,正如预期的那样,并且它的文件权限也是正确的。

/usr/local/bin 被添加到 $PATH 中,因此令人惊讶的是它没有立即看到新的 cmd,但也许它直到重新启动后才重新加载或映射它?我不知道。但我只是花了一个小时试图解决这个问题,所以我发布了对我有用的内容以避免其他麻烦。


Ani*_*Dey 14

TL;DR 如果您通过管理节点nvm,那么变量中可能不包含纱线二进制文件的路径$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"
Run Code Online (Sandbox Code Playgroud)

在你的配置文件的末尾(.zshrc对我来说)或至少在$NVM_DIR初始化之后。


我最近遇到了这个问题,在寻找解决方案时,我来到了这里。

我的环境如下所示:

  • 操作系统:Ubuntu 20.04
  • 壳:zsh
  • nvmNodeJS:通过, 和 NOT管理它apt

看完所有答案后,我并不热衷于卸载任何东西。所以我尝试更深入地挖掘。

我是yarn通过npm install -g yarn命令安装的。所以我想验证的第一件事是二进制文件的位置yarn。为此,我运行了where yarn列出二进制文件安装路径的命令yarn

$ where yarn

/home/<user_name>/.nvm/versions/node/v16.11.1/bin/yarn
Run Code Online (Sandbox Code Playgroud)

然后它击中了我。在我的.zshrc文件中,我在顶部添加了yarn global bin命令(它会溢出由yarn安装的所有全局包的目录),如下所示:

# Top of my .zshrc file
export PATH="`yarn global bin`:$HOME/bin:/usr/local/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

并根据安装说明nvm$NVM_DIR保存目录路径的变量nvm)被添加到我的文件末尾.zshrc

因此,当我启动 shell 时,它实际上是在加载路径之前尝试加载yarn命令(存在于目录内) 。nvm$NVM_DIR

为了解决这个问题,我调整了我的.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"
Run Code Online (Sandbox Code Playgroud)

我希望这会有所帮助。


小智 8

这为我解决了这个问题:

corepack enable
Run Code Online (Sandbox Code Playgroud)

(如果出现“内部错误:EACCES:权限被拒绝”,请使用 sudo 运行)

Yarn 文档也推荐这样做: https: //yarnpkg.com/getting-started/install


小智 5

卸载cmdtest

sudo apt remove cmdtest
Run Code Online (Sandbox Code Playgroud)

然后,运行这些命令:

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
Run Code Online (Sandbox Code Playgroud)