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

我在通过 zsh 中的 npm 安装 誓言时遇到了一些问题。这就是我得到的。我试着安装它,有没有-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
350173 次浏览

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

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

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

zstyle ':completion:*' rehash true

如果你有 Oh-my-zsh,一个公关已经制定,你可以整合它,直到它被拉: https://github.com/robbyrussell/oh-my-zsh/issues/3440

~/.zshrc的开头加上 source /home/YOUUSERNAME/.bash_profile

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

对于 麦克用户: 添加 source /Users/YOUUSERNAME/.bash_profile

对于 MacOS用户: 考虑使用 .bash_profile.profile 取而代之。您可能仍然需要手动将其添加到 ~/.zshrc:

source $HOME/.profile

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

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

touch ~/.profile
open -e !$

增加的价值是,不管使用哪种 shell,使用单个文件来设置环境感觉很好。在 zsh 中加载 bash 配置文件感觉很笨拙。

引用 Cos https://stackoverflow.com/a/415444/2445063公认的答案

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

遵循菲利普 · 埃克伯格的研究/意见 https://stackoverflow.com/a/415410/2445063

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

回到 Sshck,关于 bash 的注意事项:

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

另外一个需要尝试的方法是取消对 ~/.zshrc中第一个 export的评论:

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

Ubuntu上,在安装 ZSH之后,先前在 bash的终端上安装了 节点或其他软件包,

首开:

nano .zshrc

取消对第二行的评论:

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

这对我来说很有用,而且不需要写任何代码行,我认为这个选项在 麦克上也是可用的。

对于 麦克用户:

除此之外: Nvm,iterm2,zsh

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

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

source $HOME/.bashrc

在我看来,首先,您必须确保已经安装了任何类型的 Node 版本。这种类型的:

nvm ls

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

nvm install <node_version**>

你可以在 节点网站中找到实际的版本

然后您将拥有 Node 并且能够使用 Npm 命令

在我的示例中,我使用 NVM 安装了节点,在安装 z Shell 之后,node 和 NVM 命令不能工作。因此,对我有效的方法是使用以下命令再次安装 nvm:

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

以上命令再次安装了 nvm,因为节点已经安装,所以它自动添加了节点路径。Zhrc 文件和一切工作。

仅限 Mac 用户
假设您已经正确地安装了 nvm pre 和 npm
(下面是如何安装的详细指南:
为 Mac 用户安装 nvm < br/>

你需要:

查找“ . zhrc”文件:

  • 打开终端。
  • 键入 open ~以访问您的主目录。
  • Cmd + Shift + .显示 Finder 中的隐藏文件。
  • 定位 。 zhrc

编辑“ . zhrc”文件:

  • Add: source /Users/_user_Name_/.bash_profile到文件的顶部(其中 _ user _ Name _ 表示您的用户)。

  • 保存文件,并关闭“终端”窗口。

对我来说,将 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”# 加载 NVM [-s“ $NVM _ DIR/bash _ complete”] & &

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

  4. 重启终端

我希望这能解决你的问题。

如果您已经使用 nvm 添加了内容,请将以下内容添加到您的。因为 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

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

我用 brew upgrade node解决了这个问题

对于 MAC: 我尝试了以上的一些方法,但是没有效果,不能让任何东西工作。

我确实安装了 BREW,所以尽管这不是最好的方法,但是对于 zsh,我做到了:

  1. Sudo chown-R $(whoami)/usr/local/share/man/man8 (用于酿造访问)
  2. Bremupdate & & breminstall npm (我已经安装了节点)
  3. Npm-v (确认安装)
  4. Nano ~/. zhrc (清空文件更改并保存)

这对我很有效。希望这对某些人有所帮助。 # 1困扰着我,但是我现在会接受。

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

Https://nodejs.org/en/download/

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

添加

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

~/.bash_profile保持所有东西在一个地方,然后添加

source $HOME/.bash_profile

~/.zshrc,如果它不是已经有将做的把戏。无需注销和返回,只需重新启动终端。

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

在我的例子中,使用 sudo安装。

例子: sudo npm i -g vercel

对于 OSX 卡特琳娜用户

brew install node@14

我使用节点14,因为角度将不支持最新版本(不知道为什么)。 然后

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

转到你的终端并运行: Nano zhrc

注意: 如果您没有这个文件,您可以使用 touvh 命令创建它: 触摸 ~/. zhrc

将以下内容粘贴到包含“ 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作为快速测试。

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

只要在我的终端写这个问题修复。请注意,我必须将它单独写入我的项目文件夹中。

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

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

有时简单的事情工作。卸载节点和再次安装为我工作。

brew uninstall node
brew install node
npm update

在我的例子中,nvm 似乎忘记了全局默认值——也许是我在第一次添加它之后安装的。

简单地重新混淆就能解决问题:

nvm alias default [insert version number here]

打开一个新的终端以使其生效

把这个添加到你的.zhrc 文件的末尾:

source $HOME/.zshrc.pre-oh-my-zsh

这立刻解决了我的问题。

在我的例子中,这发生在我将 iterm2配置为显示 git 分支名称之后。我基本上让我的 iterm2看起来更优雅。但是我注意到我的 vscode 终端正在检测 nvm 和 npm 命令

在配置 iterm2时,我已经在. zhrc 文件中添加了一些代码行。

但是将下面的行添加到。ZSHC 文件对我很有用。如果它不工作,杀死 vscode 终端并再次打开它

希望这能帮到别人

export NVM_DIR=~/.nvm
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"

我得到这个消息后安装使用家酿

enter image description here

所以我把这些线添加到 .zshrc中,它起作用了。

export PATH="/usr/local/opt/node@16/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/node@16/lib"
export CPPFLAGS="-I/usr/local/opt/node@16/include"

对于使用 windows-nvm 的 窗户,我在安装了额外的节点版本之后遇到了问题。我的 npm 停止工作,但只在 ZSH。Bash、 Powershell 和 cmd 都运行良好。最后修复它的方法是向 alias npm="npm.cmd"的 zsh 添加一个别名,然后它又开始工作了。我认为 zsh 很难找到正确的二进制文件,所以。Cmd 文件修复了这个问题。