运行"grunt"命令时出现"致命错误:无法找到本地的grunt。"

73
我使用以下命令卸载了grunt。
npm uninstall -g grunt

然后我再次使用以下命令安装grunt。

npm install -g grunt-cli

访问以下链接: https://npmjs.org/package/grunt-html

我想使用上述的Grunt插件。

但是,当我运行grunt命令时,它会给出以下错误:

D:\nodeJS\node_modules\grunt-html>grunt
grunt-cli: The grunt command line interface. (v0.1.6)

Fatal error: Unable to find local grunt.

If you're seeing this message, either a Gruntfile wasn't found or grunt
hasn't been installed locally to your project. For more information about
installing and configuring grunt, please see the Getting Started guide:
http://gruntjs.com/getting-started

3
我不明白这与jQuery有什么关系。你必须像文档中所述一样在项目目录中安装grunt:http://gruntjs.com/getting-started#installing-grunt-and-gruntplugins。错误信息也指出:“[...]或者grunt未在本地安装到您的项目中。” - Felix Kling
我已经成功在我的项目目录中安装了Grunt。现在我该如何使用这个插件? - Ashwin Hegde
1
你安装插件并按照其项目页面上的说明操作,该页面是你链接到的页面。 - Felix Kling
这是一篇关于解决Fatal error: Unable to find local grunt. 的stack overflow帖子,可能对你有所帮助。 - Anshul
7个回答

177

所有内容都在gruntjs.com上很好地得到了解释。

请注意,安装grunt-cli并不会安装grunt任务运行器! grunt CLI的工作很简单:运行已经与Gruntfile一起安装的grunt版本。这允许在同一台机器上同时安装多个版本的grunt。

因此,在您的项目文件夹中,您需要安装(最好是)最新的grunt版本

npm install grunt --save-dev

选项--save-dev将把grunt添加为您的package.json中的dev-dependency。这使重新安装依赖项变得容易。


3
我没有给你的帖子投反对票,但可能是因为你的第二行内容是不必要和学究气的。 - whitneyland
3
@LeeWhitney,我已经删除了这一行,我的意思只是错误消息提到了《入门指南》的链接,这应该是寻找答案的第一个地方。 - asgoth

20

您需要在项目文件夹中安装Grunt。

  1. 创建您的package.json文件。

$ npm init
安装grunt到该项目中,它将被安装在node_modules/下。使用--save-dev命令将该模块添加到package.json中的devDependency中。
$ npm install grunt --save-dev
然后创建gruntfile.js并运行。
$ grunt 

2
另外,请确保 node-modules 文件夹已创建。我的没有创建是因为 npm 具有 global=true 配置。我在这里找到了解决方案:https://dev59.com/BGYr5IYBdhLWcg3wuciw#13449393。 - Luís Bianchin

4

我认为您需要将grunt添加到您的package.json文件中。请参考此链接


2
@mpang,链接已失效。 - Gaʀʀʏ

4

我在Windows grunt上遇到了这个问题,因为我在64位的Windows操作系统上安装了32位版本的Node。当我专门安装了64位版本时,它开始工作。


1
我给你点赞...不知道为什么这个被投票否决了。这似乎是 grunt 失败的完全合理的原因。 - Michael Martin-Smucker

1
今天我在Windows 32位系统上遇到了相同的问题,使用的是node 0.10.25和grunt 0.4.5。我按照dongho's answer的步骤进行操作,并添加了一些额外的步骤。以下是我用来解决错误的步骤:
1)创建你的package.json文件。
$ npm init

2) 安装grunt到本项目,它将被安装在node_modules/目录下。--save-dev会将这个模块添加到你的package.json文件中的devDependency。

$ npm install grunt --save-dev

3) 然后创建gruntfile.js文件,样例代码如下:

module.exports = function(grunt) {

  grunt.initConfig({
    jshint: {
      files: ['Gruntfile.js', 'src/**/*.js', 'test/**/*.js'],
      options: {
        globals: {
          jQuery: true
        }
      }
    },
    watch: {
      files: ['<%= jshint.files %>'],
      tasks: ['jshint']
    }
  });

  grunt.loadNpmTasks('grunt-contrib-jshint');
  grunt.loadNpmTasks('grunt-contrib-watch');

  grunt.registerTask('default', ['jshint']);

};

这里,src/**/*.jstest/**/*.js 应该是你项目中实际使用的 JS 文件的路径

4) 运行 npm install grunt-contrib-jshint --save-dev

5) 运行 npm install grunt-contrib-watch --save-dev

6) 运行 $ grunt

注意: 当你需要使用常见的包如 concat, uglify 等时,你需要通过 npm install 添加这些模块,就像我们在步骤 4 和 5 中安装 jshint 和 watch 一样


1
如果您是一个已经存在的项目,可能需要执行npm install。 GuntJS入门步骤2。

1
这对我解决了问题。我错误地使用以下命令安装了grunt:
sudo npm install -g grunt --save-dev

然后在项目文件夹中运行以下命令:

npm install

这导致了问题作者看到的错误。 然后我使用以下命令卸载了grunt:
sudo npm uninstall -g grunt

删除了node_modules文件夹。然后使用以下命令重新安装grunt:

npm install grunt --save-dev

在项目文件夹中运行以下命令:
npm install

出于某种奇怪的原因,当您使用-g全局安装grunt,然后卸载它时,node_modules文件夹会保留一些东西,阻止grunt在项目文件夹中本地安装。


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