Windows系统下找不到Bower命令

108

我在尝试使用Bower(安装Foundation 5)或在命令行上运行任何与Bower相关的内容时遇到了巨大的问题。

我已经安装了:

  • ruby 1.9.3
  • git(带有从命令提示符运行的选项)
  • Nodejs

我已经成功运行了:

npm install -g bower grunt-cli
gem install foundation

这些都运行得很好。我看了一下 npm/node_modules 目录,我可以在里面看到 bower 文件夹。

每次我在 cmdruby cmdgit bash 中键入 bower,都会出现:

命令未被识别

我已经在环境变量中设置了 git 路径。

令人恼火的是 bower 网站上的说明。它说:

npm install -g bower
bower install

这不起作用!


可能是重复的问题:在安装后出现“command not found”的错误。链接 - Sindre Sorhus
我最近写了一篇关于如何开始使用Bower的博客文章。它非常基础,有一个Github仓库,你可以检查代码。也许它会对你有所帮助:http://thelifelifebalance.com/llb-web-app-series-part-1-bower/ - cs_stackX
2
我也曾经卡在这个问题上很久。所有的设置都已完成,重启了电脑,甚至grunt也能正常工作,但bower在我的新Windows 8.1机器上无法运行。直到我进入全局npm_modules文件夹并从那里运行bower,它才变得“不卡”了。然后bower就可以从我的项目文件夹中工作了。我重新启动了电脑,问题仍然得到了解决...这个答案可能有点奇怪,但这就是我的经历。 - user1889992
10个回答

249

我也遇到了npm install -g bower安装后的这个问题。我通过将npm的二进制文件夹添加到我的路径中来解决了这个问题。

以下是一些有用的提示:

  1. 找到您的npm全局二进制文件位置:npm config get prefix。此路径可能类似于C:\Users\username\AppData\Roaming\npm(或者如果您使用Chocolatey,则为C:\ProgramData\chocolatey\lib\nodejs.commandline.X.XX.XX\tools)。
  2. 将步骤1中的路径添加到您的Path中。

    • 打开Windows控制面板,搜索environment,然后单击edit environment variables for your account或者Edit the system environment variables`

    • 找到名为PathPATH的变量,如果不存在,则创建一个。

    • 在此处粘贴来自步骤1的路径(以;分隔)。

    • 您可能需要重新启动命令提示符窗口。

  3. 现在您应该能够输入bower命令了。


1
对于Chocolatey用户:C:\ProgramData\chocolatey\lib\nodejs.commandline.0.10.33\tools - KimchiMan
适用于 npm 1.3.2bower 1.7.9 - Animesh Pandey
在我的情况下,'C:\Users\username\AppData\Roaming\npm' 已经被设置在环境变量中,然而运行 'npm config get prefix' 后发现路径里有 .ssh(C:\Users\username.ssh\AppData\Roaming\npm),因此覆盖环境变量中的路径可以解决这个问题。 - Monis Iqbal
for /f %a ('npm config get prefix') do setx path %a - Alex
只是想通知其他人,这对我在 Jenkins 上遇到的同样问题也起作用了,而不是像许多答案指出的与 Jenkins 相关的诊断。同时,我使用的是 Windows 操作系统。 - Monis Iqbal
只需检查它是否在较低的系统变量路径中,而不仅仅是在管理员路径中。 - Iman

19

如果这有帮助的话。

我是一个npm/bower的新手,但在我的情况下发生的是,我正在使用Angular JS教程, 它似乎已经通过npm设置了bower以便使用,而不是直接通过命令行使用。

注意:在我的情况下,我认为我的bower安装出了问题。我运行了以下命令来修复我的bower安装:

npm install -gf bower

然后我编辑了我的bower.json文件,添加了一个我想要使用的新库(在我的情况下是angular-sanitize)

我切换到我的项目目录

cd myProjectPath

然后为了运行bower,我实际上使用了npm install:

npm install

这似乎是将Bower作为NodeJS的一个包来运行,其会扫描bower.json并安装任何缺失的Bower包。

要将Bower作为npm包运行,请在Bower命令前添加npm

npm bower -v

希望这对您有所帮助,

Sean


1
如何通过npm“使用它”? - steampowered
嗨,steampowered - 说实话,我写这个已经有一段时间了。我想我指的是正常运行bower的方式是从命令行:bower但是在上面的文本中,我使用了:npm install - Sean

11
如果以上解决方案无效,我认为您应该在命令提示符中指定绝对路径以使用 bower。 在我的应用程序文件夹中,我只需调用:
C:\Users\yourusername\AppData\Roaming\npm\bower.cmd install

这是我的bower.cmd文件中的内容。看起来我的Windows无法识别~dp0变量。

node  "C:\Users\yourusername\AppData\Roaming\npm\node_modules\bower\bin\bower" %*

是的,这个命令 bower install awesome 可以运行,但我需要它作为 bower install 运行。 - Dragutescu Alexandru
没有 bower.json 文件的提示信息。 - hfrog713

2

如果您的Windows PATH变量接近1024个符号长度,那么这肯定会发生。因此,新链接如“C:\ Users \ username \ AppData \ Roaming \ npm”根本无法适应其中。

检查您的PATH,删除多余的内容,然后尝试重新安装node.js和bower等软件。还有一种方法可以增加1024长度限制。


1
在Windows命令提示符中键入以下命令:
for /f %a ('npm config get prefix') do setx path %a

重新加载cmd

1

正如其他人提到的那样,必须将bower添加到环境变量中,但最简单的方法是先输入npm位置,然后使用 Browse File 并在系统上找到bower(也可以在搜索栏中搜索),因为不同用户的位置可能会有所不同。

sample in my end


0

我在安装Chocolatey 0.9.8.28后遇到了这个问题。我尝试了这里列出的大部分解决方案,但是在Powershell命令行中无法识别'bower -v'让我感到有些奇怪,因为Chocolatey的安装“全部都是”关于Powershell的。最后,我成功地通过设置路径使Powershell能够找到更新的PATH变量设置,但我需要帮助理解为什么以及如何做到这一点,下面是我提供的解释:

在最初使用Powershell失败后,我能够进入标准的DOS命令行(而不是在Powershell中使用cmd /c),并成功执行了所有上面讨论过的路径设置的变化,并且在DOS命令行中能够看到bower和bower命令被识别。而且cmd窗口显示了完整的更新路径(C:\ProgramData\chocolatey\lib\nodejs.commandline.0.10.34\tools)- 注意版本号可能会与尊敬的KimchiMan的列表不同。

这个路径在关闭和打开新的DOS命令行窗口时持续存在,但在任何Powershell窗口中都没有被识别(从未)。

然后我发现了以下相关讨论:设置Powershell路径设置。

这指出了Powershell在启动时识别HKLM路径设置版本。并且可以将路径设置为会话(非持久性)或注册表(持久性)中的任一位置。以下是直接从该讨论中提取的。

这些命令可以为PowerShell会话临时设置路径:

$env:Path = 'New path'
[System.Environment]::SetEnvironmentVariable('Path', 'New Path', 'Process')

这些命令可以永久地为所有新的 Powershell 会话设置 PATH:
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Session Manager\Environment' -Name 'Path' -Value 'New Path'
[System.Environment]::SetEnvironmentVariable('Path', 'New Path', 'Machine')

但我之前尝试通过编程设置注册表设置,我不认为一两行的 PowerShell 脚本就能胜任这项任务。 所以我甚至没有尝试 这个选项。

相反,我去了控制面板/系统控制台,并通过“环境变量”对话框更改了路径。 我注意到,尽管 DOS 会话以管理员身份运行,但我在 DOS 命令行中使用“set PATH”更改路径所做的所有努力都已在 Windows 会话期间生效,但新的路径条目尚未持久保存到“环境变量/注册表”中。

在我通过控制面板进行此更改后,“chocolatey”工具文件夹中 bower 的更新路径(以及所有后续工具安装)被永久设置,并且无论是在 DOS 命令行还是在 Powershell 命令行中都可以使用 bower。

希望这有所帮助...


0

我遇到了同样的问题。 我只需运行“npm install -g bower”,然后访问下载目录,在我的情况下,位置是“C:\ Users \ user \ AppData \ Roaming \ npm \ node_modules \ bower”

从该目录中运行bower,一切都正常工作,即使从其他目录也是如此。


0

同样的问题。我通过使用另一个版本的bower来解决它。当我尝试使用1.2.6版本时,它可以工作。

$ npm install -g bower@1.2.6


0

卸载了64位的nodejs并安装了32位版本,同时也安装了git-32位——32位版本可以正常工作!


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