【问题标题】:Command not found after npm install in zsh在 zsh 中安装 npm 后找不到命令
【发布时间】:2012-09-26 11:20:41
【问题描述】:

我在 zsh 中通过 npm 安装 vows 时遇到一些问题。这就是我得到的。我尝试使用和不使用 -g 选项安装它。你知道这里出了什么问题吗?

[❤  ~/Desktop/sauce-node-demo:master] npm install -g vows
npm http GET https://registry.npmjs.org/vows
npm http 304 https://registry.npmjs.org/vows
npm http GET https://registry.npmjs.org/eyes
npm http GET https://registry.npmjs.org/diff
npm http 304 https://registry.npmjs.org/eyes
npm http 304 https://registry.npmjs.org/diff
/usr/local/share/npm/bin/vows -> /usr/local/share/npm/lib/node_modules/vows/bin/vows
vows@0.6.4 /usr/local/share/npm/lib/node_modules/vows
├── eyes@0.1.8
└── diff@1.0.3
[❤  ~/Desktop/sauce-node-demo:master] vows
zsh: command not found: vows

谢谢

【问题讨论】:

  • 您是否尝试过通过 rehash 刷新 shell 的路径缓存?
  • 执行此操作后仍然没有任何内容 =/
  • 我不知道为什么,但是在同一个终端中去 bash(通过键入 bash 本身并按 enter)然后切换回 zsh(通过键入 zsh 本身并按 enter),修复它! !

标签: macos zsh npm vows


【解决方案1】:

~/.zshrc开头添加source /home/YOUUSERNAME/.bash_profile

所有丢失的命令都会被检测到。

Mac 用户:添加source /Users/YOUUSERNAME/.bash_profile

【讨论】:

  • 对我来说,我必须来源 ~/.bashrc
  • 我在 Windows 10 上使用 WSL,我必须添加 `source /home/USERNAME/.profile' 才能让它工作,但它就像一个魅力
  • 我必须使用 .bashrc 而不是 bash_profile。当我获取 bash_profile 时,我得到了大量在 zsh 中找不到的命令
  • 我在 Mac OS Catalina 中的用户文件夹不包含此 .bash_profile。我也无法通过搜索找到它。更新.zshrc 文件并重新打开终端后,它的第一行是no such file or directory: /Users/m...i/.bash_profile。这可能是 Catalina 的重大变化吗?
  • 这也适用于 Mac 用户:source /Users/$USER/.bash_profile 或者更简单的source $HOME/.bash_profile
【解决方案2】:

如果您使用 Homebrew 安装了 Node.js,则可以在 /usr/local/share/npm/bin 中找到 npm 二进制文件。你应该确保这个目录在你的 PATH 环境变量中。因此,在您的 ~/.zshrc 文件中添加 export PATH=/usr/local/share/npm/bin:$PATH

【讨论】:

  • 在 mac 上,我将export PATH="$HOME/.npm-packages/bin:$PATH" 添加到我的~/.zshrc
  • $HOME/.npm-global/bin 使用 npm v6.9.0 为我工作
  • 如果您没有通过 Homebrew 安装 Node.js 或者您不记得了怎么办?你如何找到'usr/local/share/npm/bin'?
【解决方案3】:

如果您使用 nvm 添加,请将以下内容添加到您的 .zshrc 文件中并重新启动终端,因为 zsh shell 未检测到文件的二进制文件,我们指定了路径

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

【讨论】:

  • 谢谢!这在 Ubuntu 20.04 上对我有用。现在我可以使用 nvm、npm、node 命令了 :)
  • 这适用于我在 Ubuntu 18.04 上。
  • 在 MacOX 11.6.1 上为我工作,谢谢!
【解决方案4】:

Mac 用户:

除了以下内容: nvm, iterm2, zsh

我发现使用.bashrc 而不是.profile.bash_profile 引起的问题要少得多。

只需将后者添加到我的.zshrc 文件中:

source $HOME/.bashrc

【讨论】:

  • 我不得不使用source $HOME/.bash_profile,但这是迄今为止最好的答案。实际上,我已经为 bash 正常配置了 sdkman 和节点。我将节点模块添加到路径中,但不断收到“权限被拒绝”。这解决了这个问题!回到编码!
【解决方案5】:

仅限 Mac 用户
假设您之前安装了 nvm,并且 npm 正确
(下面是关于如何安装它的分步指南:
install nvm for Mac users )。

你需要:

找到“.zshrc”文件:

  • 打开终端。
  • 输入 open ~ 以访问您的主目录。
  • Cmd + Shift + . 可在Finder 中显示隐藏文件。
  • 找到 .zshrc

编辑“.zshrc”文件:

  • 在文件顶部添加:source /Users/_user_Name_/.bash_profile(_user_Name_ 代表您的用户。

  • 保存文件,然后关闭终端窗口。

【讨论】:

  • 尽管这看起来像是一个 hack,但我发现它是在 Catalina 升级后将我所有预安装的东西从 bash 引入 zsh 的好方法。
  • 这对我来说就是答案,因为简单地运行 source /Users/_user_Name_/.bash_profile 仅在当前会话期间持续。
  • 很清楚,看起来“打开~”会打开一个新的Finder窗口,你可以正常打开它。和'Cmd + Shift +。'是隐藏/显示隐藏文件的切换。我相信从 Finder 查看隐藏文件的能力是必须首先配置的设置,所以也许通过终端是解决这个问题的方法。但是如果这个设置已经配置好了,似乎就不需要使用终端打开Finder了。
  • .bash_profile 不一定包含有效的zsh 代码; bashzsh 是两个相似但不同的 shell。
  • 在我的例子中,.bash_profileoh-my-zsh。如果有人为此挣扎。
【解决方案6】:

Ubuntu上,安装ZSH后,之前在bash终端安装Node或其他包,

首次打开:

nano .zshrc

并取消注释第二行:

export PATH=$HOME/bin:/usr/local/bin:$PATH

这对我有用,无需写任何行,我认为 Mac 上也可以使用此选项。

【讨论】:

  • 但这对我不起作用。即使我确实在我的 .zshrc 中添加了源 $HOME/bin 它也不起作用。每次打开 shell 提示符时都会得到一些输出。
【解决方案7】:

对于 ma​​cOS 用户:考虑使用.profile 代替 .bash_profile。您可能仍需要手动将其添加到~/.zshrc

source $HOME/.profile

注意默认没有这样的文件! 引用 slhck https://superuser.com/a/473103:

无论如何,如果文件不存在,您可以简单地创建文件,然后在文本编辑器中打开它。

touch ~/.profile
open -e !$

附加值是,使用单个文件设置环境感觉很好,无论使用何种外壳。在 zsh 中加载 bash 配置文件感觉很尴尬。

引用 Cos https://stackoverflow.com/a/415444/2445063 接受的答案

.profile 只是/bin/sh 最初使用的登录脚本文件名。 bash,通常与 /bin/sh 向后兼容,如果存在则将读取 .profile

根据 Filip Ekberg 的研究/意见https://stackoverflow.com/a/415410/2445063

.profile 相当于根的.bash_profile。我认为更改名称是为了让其他 shell(csh、sh、tcsh)也可以使用它。 (你不需要一个作为用户)

回到 slhck,关于 bash 的注意事项

(...) 一旦你创建了一个名为~/.bash_profile 的文件,你的~/.profile 将不再被读取。

【讨论】:

  • 只是在这里添加我的 10 美分,不要忘记这样做并完全关闭终端。然后再次打开它,它应该可以工作。在退出一切并重新打开之前,没有一个解决方案对我有用。完美!
  • 对我来说最好的答案,作为一个 Ubuntu 用户。我只需要将.profile 文件导入我的.zshrc 文件。只需在.zshrc 文件的开头添加source ~/.profile 并重新加载即可。
【解决方案8】:

我通过brew upgrade node解决了这个问题

【讨论】:

  • 这对我有用,应该是任何人在尝试硬修改系统文件作为后续步骤之前的第一步,如果这对你不起作用。
  • 为我工作谢谢。讨厌这样的隐形错误
【解决方案9】:

要尝试的另一件事是我的答案是取消注释~/.zshrc 中的第一个export

# If you come from bash you might have to change your $PATH.
export PATH=$HOME/bin:/usr/local/bin:$PATH

【讨论】:

    【解决方案10】:

    以我的拙见,首先,您必须确保安装了任何类型的 Node 版本。对于该类型:

    nvm ls
    

    如果你没有得到任何版本,这意味着我是对的 :) 然后你必须输入:

    nvm install <node_version**>
    

    **你可以在Node website找到的实际版本

    然后您将拥有 Node,您将能够使用 npm 命令

    【讨论】:

    • 谢谢@daxtersky。这正是我所需要的。
    • 这也为我做了。 node --version 与nvm ls 不同,运行命令后现在好了。
    【解决方案11】:

    对于仍有问题的任何人。不要忘记注销并再次登录。

    【讨论】:

    • 这是 Mac OS Catalina 上的解决方案。
    • 你能澄清一下吗?我在哪里登录和注销?天哪,我的脸书账号?我的 Instagram 帐户?我的推特账号?
    • 你的电脑
    【解决方案12】:

    转到您的终端并运行:nano .zshrc

    注意:如果你没有这个目录,你可以使用 mkdir 命令创建它: mkdir ~/.zshrc

    将以下内容粘贴到包含“export ZSH”的行下方:

    export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
    

    现在只需点击 ^X,系统会询问您是否要保存。说“是”并按回车键,如果它说您正在更改文件,则再次按回车键。保存后可能需要重启终端。

    如果您之前安装过节点,请尝试使用 node -v 作为快速测试。

    【讨论】:

      【解决方案13】:

      对我来说,将export PATH=/usr/local/share/npm/bin:$PATH 添加到.zshrc 的公认答案不起作用。我尝试添加 NVM_DIR 也解决了我的问题。

      1. 试试vi .bashrc
      2. 你会发现如下一行。复制它。

        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

      3. 将复制的内容粘贴到.zshrc文件中

      4. 重启终端

      希望这能解决您的问题。

      【讨论】:

      • 我的情况: 1. 我已经通过 nvm 安装了 Node,一切正常。 2.然后同时我从bash切换到zsh和节点。停止工作。所以上面的答案对我来说是解决办法。
      【解决方案14】:

      我在安装 Vercel CLI 时遇到了同样的问题。

      就我而言,使用sudo 安装。

      示例:sudo npm i -g vercel

      【讨论】:

        【解决方案15】:

        它在 zsh 中对我有用。试试nvm install --latest-npm

        【讨论】:

          【解决方案16】:

          在我的情况下,重新安装节点解决了这个问题。任何人都可以通过以下网站安装节点:

          https://nodejs.org/en/download/

          【讨论】:

          • 重新安装 node js 解决了这个问题,因为 nodejs 和 npm 的二进制路径作为设置的一部分被添加到 PATH 系统变量中。重新安装应该是最后的手段,在zshrc中设置npm路径或其他涉及设置路径的解决方案应优先考虑。
          【解决方案17】:

          就我而言,我用 NVM 安装了 node,安装 z Shell 后,node 和 nvm 命令不起作用。所以对我有用的是用这个命令再次安装 nvm:

          wget https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
          sudo zsh install.sh
          

          上面的命令再次安装了nvm,由于已经安装了node,它在.zshrc文件中自动添加了node路径,一切正常。

          【讨论】:

            【解决方案18】:

            对于 MAC:我尝试了上述一些方法,但无济于事,无法正常工作。

            我确实安装了 BREW,所以虽然这不是最好的方法,但使用 zsh,我做到了:

            1. sudo chown -R $(whoami) /usr/local/share/man/man8(用于 brew 访问)
            2. brew update && brew install npm(我已经安装了节点)
            3. npm -v(确认安装)
            4. nano ~/.zshrc(清空文件更改并保存)

            这对我有用。希望这可以帮助某人。 #1 困扰着我,但我现在会忍受。

            【讨论】:

              【解决方案19】:

              我认为问题更多在于 ZSH 的完成。

              您需要在 .zshrc 中添加这一行:

              zstyle ':completion:*' rehash true
              

              如果你有Oh-my-zsh,已经做了一个PR,可以集成直到拉取:https://github.com/robbyrussell/oh-my-zsh/issues/3440

              【讨论】:

                【解决方案20】:

                在 Mac Catalina 上使用 Node v12+,全局依赖项显示在 /$HOME/.npm-global/bin

                添加

                export PATH="$HOME/.npm-global/bin:$PATH"
                

                ~/.bash_profile 将所有内容保存在一个位置,然后添加

                source $HOME/.bash_profile

                发送至~/.zshrc,如果还没有的话就可以了。无需注销并重新登录,只需重新启动终端即可。

                【讨论】:

                  【解决方案21】:

                  对于 OSX Catalina 用户

                  brew install node@14
                  

                  我正在使用节点 14,因为 Angular 不支持最新版本(不知道为什么).. 那么

                  echo 'export PATH="/usr/local/opt/node@14/bin:$PATH"' >> ~/.zshrc
                  

                  【讨论】:

                  • 我听说 Brew 不适合生产环境,因为它可能会导致公司安全策略出现问题。我不会推荐这个,除非它是你的个人机器。
                  • 谢谢@Shah 我会记住这一点,从没想过 brew 有一些安全问题。非常感谢。
                  • 这不是 Brew,更多的是您的公司可能不会授予某些操作的权限
                  【解决方案22】:

                  只要在我的终端上写这个就解决了这个问题。请注意,我必须在我的项目文件夹中单独编写它。

                  export PATH="$HOME/.npm-packages/bin:$PATH"
                  export PATH="$HOME/.node/bin:$PATH"
                  

                  来源:https://cloudlinuxtech.com/npm-command-not-found-fix/

                  【讨论】:

                    【解决方案23】:

                    有时简单的事情会奏效。卸载节点并再次安装对我有用。

                    brew uninstall node
                    brew install node
                    npm update
                    

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2019-11-17
                      • 1970-01-01
                      • 2015-12-21
                      • 1970-01-01
                      • 2021-05-01
                      • 2014-01-13
                      • 2021-12-17
                      相关资源
                      最近更新 更多