这个错误的原因是什么 - "致命错误:无法找到本地grunt"

402

我先移除了旧版的grunt,然后安装了新版的grunt,但是遇到了如下错误:

D:\www\grunt-test\grunt grunt-cli: The grunt command line interface. (v0.1.4)

Fatal error: Unable to find local grunt.

如果你看到这个消息,可能是因为Gruntfile文件不存在,或者grunt没有被本地项目安装。有关安装和配置grunt的更多信息,请参阅入门指南:http://gruntjs.com/getting-started

这是因为系统路径中没有grunt的引用吗?还是其他原因?我已经试过多次重新安装。


6
你是否全局安装了?npm install grunt -g - elclanrs
1
你的项目根目录下是否有 Gruntfile.js 文件? - Simon Boudrias
6
@Garreh 好久不见了,但请尝试从终端运行 npm install grunt --save-dev。这将会把最新版本添加到你的 package.json 文件中。 - Romain
248
抱歉 - 我在一个新检出的项目中遇到了这个问题。只需要运行 npm install 命令就可以解决! - poshaughnessy
6
nmp install - 在本地的node_modules文件夹中安装所需的依赖项。 - poorva
显示剩余9条评论
13个回答

305

我认为你的项目目录中没有 grunt.js 文件。使用 grunt:init 命令,它将为你提供选项,例如 jQuery, node,commonjs。选择你需要的选项,然后继续操作。这真的很有效。如需更多信息,请访问此链接

进行以下操作:

 1. npm install -g grunt
 2. grunt:init  ( you will get following options ):
      jquery: A jQuery plugin
      node: A Node module
      commonjs: A CommonJS module
      gruntplugin: A Grunt plugin
      gruntfile: A Gruntfile (grunt.js)
 3 .grunt init:jquery (if you want to create a jQuery related project.).

它应该可以工作。

v1.4的解决方案:

1. npm install -g grunt-cli
2. npm init
   fill all details and it will create a package.json file.
3. npm install grunt (for grunt dependencies.)

编辑: 更新新版本的解决方案:

 npm install grunt --save-dev

2
这个版本必须是旧的(v0.3)。今天我卸载了它,并安装了新的grunt(v0.4),叫做Grunt-CLI。有些东西已经改变了。 - Ryan Yiada
29
目前,npm install grunt会安装grunt 0.3.x版本。你需要执行npm install grunt@0.4来本地安装grunt-cli所需的版本。 - Jack
6
我希望Grunt的安装步骤能够涵盖@0.4版本。在找到你的评论之前,我一直苦苦搜寻,很感激你的提示。 - cnp
2
npm install grunt --save-dev 对我来说就可以了。 - Vinicius Braz Pinto
6
grunt-cli 应该全局安装,但它期望你在项目中安装本地的 grunt.js。这样可以让每个项目使用不同版本的 grunt。我通常使用带有 package.json 文件的 npm 安装 grunt.js 和其他任何 grunt 插件等。 - Henry
显示剩余3条评论

189

在node_modules中安装Grunt而不是全局安装

无法找到本地的Grunt通常意味着您已经全局安装了Grunt。

Grunt CLI坚持要求您在本地的node_modules目录中安装grunt,以便Grunt仅限于您的项目。

以下操作将失败:

npm install -g grunt

改为这样做:

npm install grunt --save-dev

1
这解决了我的问题。不确定为什么它没有被接受。好东西。 - Andy

86

npm install

为了在./node_modules中本地安装Grunt(以及在package.json文件中指定的所有其他内容)


4
我这样做是因为像个傻瓜一样,我在将新的项目库拉到 Mac 后忘记运行这个命令了..... :/ - neoswf
2
为什么grunt需要本地安装,既然命令行工具总是可以全局定位? - Mike M
1
@MikeM 有时候你的 PATH 中会包含 node_modules/.bin。此外,本地和全局安装的版本可能不同。 - Klas Mellbourn
在我的情况下,这是NetBeans的问题。有时候,在我使用外部工具执行“git stash”时,它会崩溃我的项目,这里会从“node_modules”中删除一些模块,然后一切都停止工作(之前一切正常)。经过“npm install”后,它又可以正常工作了。 - Wirone

27

如果在项目中已经有一个名为package.json的文件,并且其中包含grunt作为依赖项,

  "devDependencies": {
    "grunt": "~0.4.0",

然后你可以运行 npm install 来解决这个问题。


7
我犯了一个错误,有些软件包我是用sudo安装的,有些则没有使用特权权限。这样做解决了我的问题。
sudo chown -R $(whoami) $HOME/.npm

希望能帮助到某些人。

5

提示说你本地没有 grunt,请尝试执行以下命令:

npm install grunt

(不需要使用 -g,这样安装的是本地的 grunt)

虽然这不是直接相关的,但请确保当前文件夹中有 Gruntfile.js 文件。


4
根据使用的grunt版本不同,可能会出现一些问题。较新版本的grunt需要文件名为Gruntfile.js(而不是旧版的grunt.js)。
您应该全局安装grunt-cli工具(通过npm install -g grunt-cli实现)。这样可以在命令行中运行grunt命令。
其次,请确保已经为项目本地安装了grunt。如果您的package.json没有像"grunt": "0.4.5"这样的内容,则应在项目目录中执行npm install grunt --save

3

我必须在Ubuntu上执行以下命令来解决这个问题(我只了解grunt一个小时):

sudo npm install -g grunt
sudo npm install -g grunt-cli

cd /usr/local/bin
# current symlink points to ../lib/node_modules/grunt/bin/grunt*
sudo rm /usr/local/bin/grunt
sudo ln -s ../lib/node_modules/grunt-cli/bin/grunt* grunt

虽然有点不太好,但这是我找到的唯一解决方案... :(


2

以上方法对我都没用,因为我全局安装了Grunt(在一些回答中被推荐),这导致一切都出了问题。以下是解决方法:

npm uninstall -g grunt
npm install

现在只有当地的 grunt 被安装并且对我可用。


(注:grunt 是一种 JavaScript 任务运行器工具)

1
您可以简单地运行此命令:

npm install grunt --save-dev

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