在Windows 8上使用Grunt: 'grunt'未被识别

56

我在Windows 8上的机器上无法从命令行运行Grunt,经过我的研究发现最常见的解决方案是安装grunt-cli,因为Grunt已不再全局安装。 我还需要确保我实际安装了Grunt任务运行程序,因为它不由grunt-cli安装。其他解决方案指向PATH系统环境变量,但它似乎指向我的预期路径:

C:\Users[用户名]\AppData\Roaming\npm

尽管我已完成所有这些步骤,但我在CLI中仍然收到“'grunt'未被识别为内部或外部命令、可执行程序或批处理文件”的错误消息。我尝试了以下几个方法,在每次尝试后卸载了所有内容:

  • 全局安装 grunt-cli (npm install -g grunt-cli),然后在我想使用它的目录级别上运行 grunt (npm install grunt)
  • 与上面相同,但安装顺序相反
  • 使用管理员命令提示符进行上述两种方法

我是否错过了一些明显的东西?


8
在运行 npm install -g grunt-cli 后,输入 where grunt。输出是什么? - WiredPrairie
1
grunt.cmd 是否位于你的 AppData\Roaming\npm 文件夹中? - WiredPrairie
2
最后一次尝试——请确认您的路径是否正确(并且没有混乱)。只需在命令提示符中键入“PATH”即可。考虑到您所描述的错误和步骤,其他解释都没有任何意义。 - WiredPrairie
3
在Windows 7中,我试图将NODE_PATH设置为%AppData\npm,这样就能正确地转换路径了。然后,在我的Path中,我添加了%NODE_PATH%,但它并没有起作用。我认为它不喜欢包含另一个变量的变量。也就是说,在DOS中,我不能使用cd %NODE_PATH%,但是cd %AppData%\npm却能够正常工作。所以我最终在我的System变量中添加了完整的路径到npm,然后继续进行。现在它可以正常工作了。 - cbmeeks
1
@cbmeeks,你的 NODE_PATH 变量是错误的;你写成了 %AppData\npm,但应该是 %AppData%\npm - mejdev
显示剩余7条评论
11个回答

63

在几台不同的Windows 8机器上,我没有遇到使用grunt的任何问题。

如果你打开文件夹:C:\Users\[username]\AppData\Roaming\npm

在这个文件夹中有一个名为grunt.cmd的文件吗?

如果没有,我建议再次尝试使用npm install -g grunt-cli,或许可以尝试以管理员身份运行命令提示符。

如果该文件存在,并且你的PATH环境变量中包含了C:\Users\[username]\AppData\Roaming\npm,那么在命令提示符下键入grunt应该可以正常运行。

愚蠢的问题,你尝试过关闭命令提示符并打开一个新的吗?


我在那里有grunt.cmd文件,以及一个名为node_modules的目录和类型为FILE的名为grunt的文件。我尝试了几个不同的命令提示符,包括常规和管理员。我现在也尝试安装其他东西(express),但是遇到了相同的问题,因此我认为这不是Grunt的问题,而是npm的问题。 - Daniel Attfield
这不是npm的问题,根据您提供的信息,它已经正确地存储了文件。Windows找不到该文件。 - WiredPrairie
2
如果您在 C:\Users[用户名]\AppData\Roaming\npm 打开命令提示符,然后运行 grunt,它是否可以工作? - Rik Leigh
1
我必须以管理员身份运行cmd窗口来安装grunt和grunt-cli,然后将C:\ Users \ [username] \ AppData \ Roaming \ npm添加到我的PATH变量中。之后它就可以正常工作了。 - Andy Allison
这是对我有效的方法。没有grunt.cmd,然后我运行了命令,它就被创建了。谢谢。 - Shad
我的grunt命令没有生效,因为我的grunt.cmd文件丢失了。根据建议,我再次运行了grunt-cli安装命令,这次成功创建了grunt.cmd文件。现在它可以正常工作了。谢谢。 注意:我是从提升的命令提示符中的roaming/npm目录内运行了grunt-cli安装命令。 - Meer

37

确认你的 PATH 是否正确(并未被搞砸)。只需在命令提示符中输入 PATH 即可。考虑到您所描述的错误和已采取的步骤,实际上没有其他解释是有意义的。

通常,如果 npm 安装正确并已正确添加到系统路径中,则使用 where grunt 命令应该可以在你的路径中找到 grunt.cmd 文件。


2
当前的NodeJS 64位Windows版本在安装时搞乱了PATH。我卸载了64位版本,改为安装x86版本,现在一切都按预期工作。 - Rebecca
10
实际上,出现问题的不是 PATH,而是它所指向的安装位置。Nodejs 安装在 C:\Program Files\nodejs,但所有的模块都被安装在 C:\Users\Username\AppData\Roaming\npm 中。 - Nico
2
“C:\Users\Username\AppData\Roaming\npm” 又从 PATH 中消失了!!!我重新加入后添加方式出错了,变成了像这样的 \C:\Users\Username\AppData\Roaming\npm,开头多了一个斜杠。 - ygaradon
+1 表示“确认您的 PATH 变量是否正确(且未被破坏)”。当我检查 PATH 变量时,发现 node 和 node 目录都被引号包裹着。移除这些引号后,命令未找到问题得到了解决。 - worc
2
我的PATH变量已超出最大长度,因此npm路径在某个时间点被某个东西删除了。使用Rapid Environment Editor缩短了一些路径,现在一切都正常了! - ProNotion
显示剩余2条评论

16
  1. 关闭所有命令提示符实例。
  2. 启动新的命令提示符实例。
  3. 键入PATHEnter,并验证 C:\Users\Username\AppData\Roaming\npm 是否在路径中。
  4. 如果不是,请注销并重新登录
    或者关闭命令提示符并重新启动explorer进程。
  5. 在命令提示符中,键入where gruntEnter
    如果报告如下,则说明正常:

    C:\Users\Username\AppData\Roaming\npm\grunt
    C:\Users\Username\AppData\Roaming\npm\grunt.cmd
    
  6. 否则,如果它报告需要重新安装grunt-cli包,请重新安装该包:

  7. INFO: Could not find files for the given pattern(s).
    

    显然,更改 PATH 环境变量的程序必须广播 WM_SETTINGCHANGE 消息。当你更改 PATH 变量时,Windows 的 系统 设置窗口会正确地执行此操作,但 NPM 安装程序不会。这就是为什么你需要重新启动资源管理器(或注销或重启,效果相同)。


7

我知道这个问题已经有答案了,但我想提供一下我在Windows 8上的逐步解决方案。

首先,我检查了我的笔记本电脑环境变量中的PATH(右键单击我的电脑 > 属性 > 高级系统设置 > 环境变量)。

它没有列在其中,所以我在用户变量中添加了一个新的变量(这样它只对我的用户帐户有效)。

在新的用户变量提示中,我输入了以下内容:

Variable Name: PATH

Variable Value: %USERPROFILE%\AppData\Roaming\npm

退出命令提示符,重新打开它,导航到我的项目目录并尝试再次运行 grunt ... 成功了!


5

我遇到了同样的问题。

我尝试了不同的方法:

  • 重启电脑
  • 删除grunt文件夹并运行

npm install -g grunt-cli

但都没有奏效。

最后我尝试了:

npm install -g grunt-cli

这次完美解决了问题。

我还试了一下

where grunt

然后发现有两个位置找到了grunt。


3
因为多按了一下空格键,我浪费了一小时的生命。如果可以的话,我会再次点赞的。 - iandayman

4

我在Windows 8上遇到了同样的问题。

我已经将“%APPDATA%\npm”添加到路径变量中。现在它可以正常工作了。


1
加一是更灵活的解决方案 - 适用于多个用户。 - yǝsʞǝla

1
我也遇到了同样的问题,这是解决方案: 你是否安装了两个不同版本的Node.JS? 可能是Nodist导致的。 这意味着你可能安装了两次NPM,这会将命令安装到两个不同的文件夹中: 一次是在C:\Users\<user>\AppData\Roaming\npm,另一次是在C:\dev\nodist\bin\binC:\dev\nodist\bin\bin没有出现在我的路径变量中,所以我添加了它,并删除了我不想使用的Node.JS版本。

1
我在Windows 8上遇到了问题,安装了grunt-cli之后,当我尝试检查grunt -vwhere grunt时,总是会出现"command not found"的错误。因此,我将路径C:\Program Files (x86)\Git\local添加到环境变量PATH中,并从该文件夹运行grunt.cmd(你需要在这里查看node_modules文件夹)。重新加载终端后,一切都开始正常工作了。

1
有时候NPM安装会破坏基本的Windows路径。我通常有自己版本的PATH进行维护。每周或在某些安装中,我手动配置和更新%PATH%变量。
基本上,Grunt.cmd不能通过%PATH%变量使用。

0
如果您在npm中没有创建grunt.cmd文件,请确保您的主目录中没有包含.npmrc文件,并且其中包含bin-links=false

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