Bower命令未找到。

168
我尝试在我的 Mac 上安装 Twitter Bower,并使用了以下命令:
npm install bower -g

我尝试了bower --help,输出为bower命令未找到。这是为什么?


2
npm install 的输出是什么?它失败了吗?它是否将 bower 安装到了不在你的 PATH 上的某个位置? - jches
可能是重复的问题:"command not found" after installation - Sindre Sorhus
5个回答

375

就像这个问题 (npm全局路径前缀) 中所说的一样,你只需要设置适当的 npm prefix 就行了。

UNIX:

$ npm config set prefix /usr/local
$ npm install -g bower

$ which bower
>> /usr/local/bin/bower

Windows和NVM:

$ npm config set prefix /c/Users/xxxxxxx/AppData/Roaming/nvm/v8.9.2
$ npm install -g bower

那么 bower 应该位于您的 $PATH 中。


1
我想补充一下,如果您在处理多个项目,则这不是最正确的答案。Bower 应该从 package.json 在本地安装在 node_modules 中,而不是全局安装,因为不同的项目可以使用不同的版本(这就是 npm 的全部意义)。真正的问题是系统无法找到本地的 bower 可执行文件。 - Bruno Finger
@BrunoFinger:当将bower安装到全局范围时,那个答案并没有解决问题。然而,使用本地的node包可能是处理项目特定工具的更好方式。 - Petr Joachim
我认为如果npm前缀设置为/usr/local,那么npm install -g将在没有sudo的情况下失败。 - Guo
我们不推荐在新项目中使用Bower。请考虑使用Yarn和Webpack或Parcel。 - Daniel

66

我很确定您实际上没有正确安装它。由于您正在尝试全局安装,因此需要使用sudo运行:

sudo npm install -g bower

3
这就是安装 bower 的方式,否则它只会被安装在你执行命令的文件夹中。-g 表示全局安装,也会创建必要的链接,使模块可以作为系统命令运行。例如,bower、grunt-cli 甚至是 npm 都是这种情况的明显例子。 - user1366860
不要使用sudo安装!只需使用brew doctor并进行修复,然后您就不需要使用sudo了! - djangofan

7

或者,您可以使用随npm>5.6一起提供的npx

npx bower install


1
这应该是被接受的答案。你不应该使用npm安装全局模块。 - chovy

4

这并不是一个Bower的问题,尽管我在使用Bower时遇到了这个问题。

看起来这是一个node-which的问题。如果文件在路径中,但设置了setuid/setgid位,那么node-which将找不到它。

这里有一个设置了s位的文件:(Unix的'which'命令可以轻松找到它)

ls -al /usr/local/bin -rwxrwsr-- 110 root nmt 5535636 Jul 17 2012 git

这里是一个node-which的尝试:

> which.sync('git')
Error: not found: git

我更改了权限(chomd 755 git)。 现在node-which可以找到它。

> which.sync('git')
'/usr/local/bin/git'

希望这能有所帮助。

3

我正在使用 Node 版本管理器。我遇到了这个错误提示,因为我已经切换到了另一个版本的 Node。当我切换回安装 bower 的 Node 版本时,这个错误就消失了。在我的情况下,命令是 nvm use stable


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