在 zsh 中安装 npm 后找不到命令
Posted
技术标签:
【中文标题】在 zsh 中安装 npm 后找不到命令【英文标题】:Command not found after npm install in zsh 【发布时间】: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),修复它! ! 【参考方案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
代码; bash
和 zsh
是两个相似但不同的 shell。
在我的例子中,.bash_profile
是 oh-my-zsh
。如果有人为此挣扎。【参考方案6】:
在Ubuntu上,安装ZSH后,之前在bash
终端安装Node或其他包,
首次打开:
nano .zshrc
并取消注释第二行:
export PATH=$HOME/bin:/usr/local/bin:$PATH
这对我有用,无需写任何行,我认为 Mac 上也可以使用此选项。
【讨论】:
但这对我不起作用。即使我确实在我的 .zshrc 中添加了源 $HOME/bin 它也不起作用。每次打开 shell 提示符时都会得到一些输出。【参考方案7】:对于 macOS 用户:考虑使用.profile
代替 .bash_profile
。您可能仍需要手动将其添加到~/.zshrc
:
source $HOME/.profile
注意默认没有这样的文件! 引用 slhck https://superuser.com/a/473103:
无论如何,如果文件不存在,您可以简单地创建文件,然后在文本编辑器中打开它。
touch ~/.profile open -e !$
附加值是,使用单个文件设置环境感觉很好,无论使用何种外壳。在 zsh 中加载 bash 配置文件感觉很尴尬。
引用 Cos https://***.com/a/415444/2445063 接受的答案
.profile
只是/bin/sh
最初使用的登录脚本文件名。 bash,通常与/bin/sh
向后兼容,如果存在则将读取.profile
根据 Filip Ekberg 的研究/意见https://***.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
也解决了我的问题。
-
试试
vi .bashrc
你会发现如下一行。复制它。
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
将复制的内容粘贴到.zshrc
文件中
希望这能解决您的问题。
【讨论】:
我的情况: 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,我做到了:
-
sudo chown -R $(whoami) /usr/local/share/man/man8(用于 brew 访问)
brew update && brew install npm(我已经安装了节点)
npm -v(确认安装)
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
【讨论】:
以上是关于在 zsh 中安装 npm 后找不到命令的主要内容,如果未能解决你的问题,请参考以下文章
在 Angular 中安装 Tesseract.js 后找不到名称“缓冲区”错误
mac上的xampp-vm在堆栈管理器中安装后找不到'/opt/lampp'目录
在我的 Mac 操作系统中安装 libevent 后找不到文件 <event2\event.h>