【问题标题】:yarn command not found after installing via npm通过 npm 安装后找不到 yarn 命令
【发布时间】: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 的情况下运行它。如果您的路径设置正确,那么这个问题是由于用户造成的。

标签: javascript node.js ubuntu npm yarnpkg


【解决方案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"
      

      根据nvminstallation 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之间重新启动计算机。

        这对我有用

        【讨论】:

          猜你喜欢
          • 2022-01-05
          • 2022-01-12
          • 1970-01-01
          • 2019-06-26
          • 2015-12-21
          • 1970-01-01
          • 2012-09-26
          • 2014-01-13
          • 1970-01-01
          相关资源
          最近更新 更多