Grunt错误:找不到模块'load-grunt-tasks'。

48

当我使用grunt命令时,它会显示以下错误:

$ grunt
Loading "Gruntfile.js" tasks...ERROR
>> Error: Cannot find module 'load-grunt-tasks'
Warning: Task "default" not found. Use --force to continue.

Aborted due to warnings.


Execution Time (2015-02-07 18:05:42 UTC)
loading tasks  339ms  ███████████████████████████████████████████████ 99%
Total 344ms

我已经尝试过 - npm install,npm update命令。如果有人能帮我解决这个问题,那就太好了。谢谢!

添加Gruntfile.js的内容

'use strict';

var paths = {
  js: ['*.js', 'test/**/*.js', '!test/coverage/**', '!bower_components/**', 'packages/**/*.js', '!packages/**/node_modules/**', '!packages/contrib/**/*.js', '!packages/contrib/**/node_modules/**'],
  html: ['packages/**/public/**/views/**', 'packages/**/server/views/**'],
  css: ['!bower_components/**', 'packages/**/public/**/css/*.css', '!packages/contrib/**/public/**/css/*.css']
};

module.exports = function(grunt) {

  if (process.env.NODE_ENV !== 'production') {
    require('time-grunt')(grunt);
  }

  // Project Configuration
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    assets: grunt.file.readJSON('config/assets.json'),
    clean: ['bower_components/build'],
    watch: {
      js: {
        files: paths.js,
        tasks: ['jshint'],
        options: {
          livereload: true
        }
      },
      html: {
        files: paths.html,
        options: {
          livereload: true,
          interval: 500
        }
      },
      css: {
        files: paths.css,
        tasks: ['csslint'],
        options: {
          livereload: true
        }
      }
    },
    jshint: {
      all: {
        src: paths.js,
        options: {
          jshintrc: true
        }
      }
    },
    uglify: {
      core: {
        options: {
          mangle: false
        },
        files: '<%= assets.core.js %>'
      }
    },
    csslint: {
      options: {
        csslintrc: '.csslintrc'
      },
      src: paths.css
    },
    cssmin: {
      core: {
        files: '<%= assets.core.css %>'
      }
    },
    nodemon: {
      dev: {
        script: 'server.js',
        options: {
          args: [],
          ignore: ['node_modules/**'],
          ext: 'js,html',
          nodeArgs: ['--debug'],
          delayTime: 1,
          cwd: __dirname
        }
      }
    },
    concurrent: {
      tasks: ['nodemon', 'watch'],
      options: {
        logConcurrentOutput: true
      }
    },
    mochaTest: {
      options: {
        reporter: 'spec',
        require: [
          'server.js',
          function() {
            require('meanio/lib/core_modules/module/util').preload(__dirname + '/packages/**/server', 'model');
          }
        ]
      },
      src: ['packages/**/server/tests/**/*.js']
    },
    env: {
      test: {
        NODE_ENV: 'test'
      }
    },
    karma: {
      unit: {
        configFile: 'karma.conf.js'
      }
    }
  });

  //Load NPM tasks
  require('load-grunt-tasks')(grunt);

  /**
   * Default Task
   */
  grunt.hook.push('clean', -9999);
  grunt.hook.push('concurrent', 9999);
  if (process.env.NODE_ENV === 'production') {
    grunt.hook.push('cssmin', 100);
    grunt.hook.push('uglify', 200);
  } else {
    grunt.hook.push('jshint', -200);
    grunt.hook.push('csslint', 100);
  }

  //Default task.
  grunt.registerTask('default', ['hook']);

  //Test task.
  grunt.registerTask('test', ['env:test', 'mochaTest', 'karma:unit']);

  // For Heroku users only.
  // Docs: https://github.com/linnovate/mean/wiki/Deploying-on-Heroku
  grunt.registerTask('heroku:production', ['cssmin', 'uglify']);
};

10
尝试运行 npm install load-grunt-tasks 命令。 - laggingreflex
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - silent_programmer
那么这个错误就解决了。这个新的错误可能是你的 gruntfile.js 中的一个错误,请发布它的内容。 - laggingreflex
好的。已添加 gruntfile.js 文件的内容。 - silent_programmer
1
尝试运行 sudo npm install。虽然有点长,但对我解决了各种错误。 - Dũng Trần Trung
4个回答

54

尝试运行:

$ npm install

之后,如果您运行它仍然出现错误,或者有其他错误,则可能您尚未安装Ruby、Compass或两者都没有安装 :)


44

我遇到了同样的问题,我的问题出在package.json文件中,我没有真正安装需要的NPM包,而之前我以为它已经自动安装了。尝试执行以下操作:

npm install --save-dev load-grunt-tasks

如果那样做不起作用,您能否提供package.json文件,以便我们可以获得更多信息。


1

我曾遇到你遇到的同样问题,似乎是因为 gruntfile 缺少必需的初始化步骤。

通过更改以下内容:

require('load-grunt-tasks')(grunt);

/**
 * Default Task
 */
grunt.hook.push('clean', -9999);

转换为:

require('load-grunt-tasks')(grunt);

grunt.loadNpmTasks('grunt-hook');

/**
 * Default Task
 */
grunt.hook.push('clean', -9999);

添加grunt.loadNpmTasks调用后,我成功解决了那个问题。问题是,现在我得到了

没有找到“clean”任务。使用--force继续。

查看其余的grunt文件,我没有看到清除任务的注册。如果我转到mean.io文档,看起来构建失败了。也许这就是原因之一?我想我问mean-cli关于gulp版本的问题,这可能就是原因。我会删除并从头开始:)


正如我所怀疑的那样,我遇到的问题与@AtharvaPuranik类似,显然是在mean init过程中选择了gulp选项导致的。我删除了那段代码,重新运行init并选择了grunt,现在它像个冠军一样工作。 - Bennett Dill

1
我认为问题与npm依赖项的声明方式以及Heroku处理它们的方式有关。 简而言之,请检查npm包是否作为开发依赖项,并将它们移动到依赖项块中,如此处所建议:https://dev59.com/JnrZa4cB1Zd3GeqP2XK8#20687098

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