安装后出现“command not found”错误的Bower

45

当我执行npm install bower -g时,似乎会出现以下情况。

/usr/local/share/npm/bin/bower -> /usr/local/share/npm/lib/node_modules/bower/bin/bower
bower@0.8.6 /usr/local/share/npm/lib/node_modules/bower

很遗憾,执行任何bower命令都会返回-bash:bower:command not found

which npm 返回 /usr/local/bin/npm ,运行 which node 返回 /usr/local/bin/node


11个回答

67

我假设你是通过Homebrew安装了Node.js,但令人烦恼的是它会将npm二进制文件安装到通常不在用户路径中的位置。你只需要将/usr/local/share/npm/bin添加到你的$PATH变量中。你可以通过将export PATH=/usr/local/share/npm/bin:$PATH添加到你的.bashrc/.bash_profile/.zshrc文件中来实现。

虽然我更倾向于卸载Homebrew安装的Node.js,并使用从nodejs.org下载的安装程序,这样就不会有这个问题。

这个问题并不是Bower特定的,任何全局安装的Node.js二进制文件都会有这个问题,例如grunt、uglify、jshint等。


1
我的英雄!谢谢。是的,我通过homebrew安装了它。所有东西都是在新机器上进行的全新安装,而homebrew似乎是最容易使用的软件包和依赖项。我还使用Paul的dotfiles,并在我的~中使用.extra文件来控制路径。现在,在我的.extra文件中,有你概述的带有export PATH行的上面一行。`# PATH additions` `PATH=$PATH:~/.rvm/bin # ruby` `export PATH=/usr/local/bin:$PATH # local path` `export PATH=/usr/local/share/npm/bin:$PATH # Boom! Works now \m/` - Gray Ghost
1
我只想补充一下,最终我卸载了Homebrew安装的Node.js,并从Node.js官网下载安装程序进行了安装。这样做可以避免之前提到的添加PATH的步骤,从而使安装更加干净。 - Gray Ghost
8
我想补充一下,在Windows 7上,我需要将C:\Users\MyUsername\AppData\Roaming\npm添加到我的路径中。 - chris polzer
我通过nodejs.org.pkg安装程序安装了Node,但它也没有将npm二进制文件放在我的路径中。据我所知,它将它们放在~/.npm-packages/bin/中,但从未提到需要将其添加到路径中。 - David Moles

9
对于在 Mac 上安装中遇到问题的用户,如官方页面所示,似乎 El Capitan 给安装包安装权限带来了问题:
npm install bower -g
我找到的解决方法是使用 sudo(超级用户)为 node 提供访问权限,以此下载包:
sudo npm install bower -g
希望这能帮助遇到同样问题的用户。 :)

6
如果您的安装方式不是标准的,您需要使用以下命令查找节点二进制文件位置:
npm config list

接下来将节点的二进制文件路径添加到~/.bash_profile文件中:

export PATH=<yourNodeBinLocation>:$PATH

记得打开一个新的终端测试,或者执行source ~/.bash_profile命令。


这绝对是最好的答案,因为它不依赖于特定的平台。 - Brian Knoblauch
这应该是被接受的答案。谢谢分享。 - Sumit Parakh

6

我知道这个问题早就被回答和接受了。我刚刚在使用karmagrunt时遇到了完全相同的问题:你安装了库,但是由于Homebrew,在全局安装的包中无法暴露出 'grunt'、'karma'、'bower'或其他。

尽管 Sindre Sorhus 的方法可行,但我认为卸载 homebrew/nodejs 并重新安装太费力了。

相反,我使用了:

npm install -g grunt-bower-cli

并且其他的也是一样的。
npm install -g grunt-cli
npm install -g karma-cli

Grunt的文档解释了为什么需要这一步骤:
这将把grunt命令放入您的系统路径中,允许从任何目录运行它。
请注意,安装grunt-cli并不会安装Grunt任务运行器! Grunt CLI的工作很简单:运行与Gruntfile相邻的已安装版本的Grunt。这允许在同一台机器上同时安装多个版本的Grunt。
在我看来,这比卸载nodejs更简单,更节省时间。

我认为这是最好的方法。坚持使用Homebrew,不必随着时间的推移跟踪各种安装程序是至关重要的... - Detro

2

在Mac OS X中,将下一行添加到您的~/.bash_profile中

export PATH="$HOME/.node/lib/node_modules/bower/bin:$PATH"

然后重新启动终端或键入:

source ~/.bash_profile


这是最好的例子,适用于任何使用Homebrew安装了Node的人。 - myself

1
我添加了这个。
export PATH=$HOME/.node/bin:$PATH

在用户文件夹中的 .bash_profile 文件末尾(并换行)处添加此内容。保存,关闭并重新打开终端。

1
如果您使用的不是Homebrew(是的,有些人确实很奇怪),例如MacPorts,则$PATH可能会出现问题。二进制文件可能位于其他位置:/opt/local/bin/grunt和可能的/opt/local/bin/npm 此外,如果您使用MacPorts安装npm,然后安装bower,则二进制文件将不在您期望的位置。它实际上会出现在您的主目录下的.npm/lib/node_modules/bower/bin 应该在~/.profile(Mac OS X)中调整您的$PATH以添加:$HOME/.npm/lib/node_modules/bower/bin 源化您的Bash配置文件或打开一个新的终端窗口,然后它就可以工作了。

1
如果以上方法都不起作用,或者你似乎无法理解提供的答案,请在系统命令提示符上运行安装命令,而不是在git-bash上运行,特别是当你使用Windows 8或7时。

1
截至2016年9月,来自nodejs.org的.pkg安装程序将安装的软件包安排在$HOME/.npm-packages/lib/node-modules下,并在~/.npm-packages/bin中创建符号链接。
$ bower install
-bash: bower: command not found
$ which bower
$ export PATH=$PATH:~/.npm-packages/bin
$ which bower
/Users/dmoles/.npm-packages/bin/bower

1
太棒了!这个解决方案对我起作用。我正在使用macOSX。 - SoftwareDeveloper

0

我的问题是Homebrew/node/npm的错误,可以在此处找到 - https://github.com/npm/npm/issues/3794

如果您已经使用Homebrew安装了node,请尝试:

npm update -gf

或者,如果您想使用Homebrew安装node并让npm工作,请使用:

brew install node --without-npm
curl -L https://npmjs.org/install.sh | sh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接