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

5ssjco0h  于 2023-02-15  发布在  Yarn
关注(0)|答案(8)|浏览(535)

根据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
yr9zkbsy

yr9zkbsy1#

sudo npm install -g npm

那么

sudo npm install -g yarn

**然后重新启动你的系统。**我做到了。在重新启动之前,只有sudo yarn工作。我试图查看文件权限,但一切似乎都很正常,文件可以按预期执行。尽管如此,重新启动后,它的工作。

如果您在安装后转到/usr/local/bin,如预期的那样,那里有一个指向yarn.js所在位置的链接,其文件权限也是正确的。
/usr/local/bin被添加到$PATH中,所以它没有立即看到新的cmd,这很令人惊讶,但也许它直到重新启动后才重新加载或Map它?我不知道。但我刚刚花了一个小时试图弄清楚这一点,所以我发布了对我有效的方法,以避免其他人的麻烦。

xmq68pz9

xmq68pz92#

    • TL; DR**如果您通过nvm管理节点,则可能$PATH变量中不包括Yarn二进制的路径。您应该添加以下内容-
# 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的安装说明,$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"

我希望这会有所帮助。

n3ipq98p

n3ipq98p3#

卸载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
kgqe7b3p

kgqe7b3p4#

如果要避免重新引导,请使用/usr/local/lib/node_modules/yarn/bin/yarn --version

v64noz0r

v64noz0r5#

这解决了我的问题:

corepack enable

(if您将看到"内部错误:EACCES:权限被拒绝",请使用sudo运行)
Yarn文档也建议这样做:https://yarnpkg.com/getting-started/install

67up9zun

67up9zun6#

yarn文档缺少一个步骤,您需要在此安装和运行yarn --version之间重新启动计算机。
这对我很有效

dpiehjr4

dpiehjr47#

我最近有一个类似的情况,这里是我如何解决它。
首先,我对当前的npm安装进行故障排除:

npm config -list

我有一个~/.npmrc文件,它有一个不同的前缀:

PREFIX=/opt/homebrew

这使得我的npm安装在/opt/homebrew下查找全局安装的包。
在我的例子中,我使用了不同的npm安装(不再使用自制程序),一个简单的修复方法是从~/.npmrc文件中删除这个定制的PREFIX,问题就解决了。
现在npm会在/usr/local/bin/下查找全局安装的包。

dxpyg8gm

dxpyg8gm8#

我在git bash上用npm install -g yarn安装了yarn,并用yarn -v测试了它,显示了安装的yarn的版本,但是当我使用yarn start时,它给了我这个错误
C:\Users\{username}\AppData\Roaming\npm/node_modules/node/bin/node: line 1: This: command not found
以下是我在Windows 10上修复问题时使用的简单步骤:
1.卸载node.js
1.重新启动计算机
1.删除您的C:\Program Files\nodejsC:\Users\{username}\AppData\Roaming\npm
1.再次安装node.js并使用node -v进行检查
1.以管理员身份启动您的vs代码并编写npm install
1.写入yarn start

相关问题