silent_programmer
silent_programmer

Reputation: 858

grunt error: cannot find module 'load-grunt-tasks'

When I am using grunt command it is showing me following error:

$ 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

I already tried - npm install, npm update commands. It would be great if someone can help me with this. Thanks!

Addding Content of 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']);
};

Upvotes: 48

Views: 67888

Answers (4)

Roland Hud&#225;k
Roland Hud&#225;k

Reputation: 790

Try running:

$ npm install

After that, if you run it and the error still persists or if there's another one, then you probably have not installed ruby, compass or both :)

Upvotes: 54

Dave D
Dave D

Reputation: 938

I had the same issue, the problem for me was in my package.json where I didn't actually install the NPM package needed and it was not automatically installed as previously thought. Try doing

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

If that doesn't work can you provide the package.json file as well so we can get a little more information.

Upvotes: 44

Paolo Carrasco
Paolo Carrasco

Reputation: 59

I think the problem is related to where the npm dependencies are declared and the way Heroku handles them. In few words, check if the npm packages are as dev dependencies and move them to the dependencies block, as suggested here: https://stackoverflow.com/a/20687098/532912.

Upvotes: 1

Bennett Dill
Bennett Dill

Reputation: 2915

I was having the same issue you were having, it seems as though the gruntfile is missing a required initialization step.

By changing this:

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

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

to this:

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

grunt.loadNpmTasks('grunt-hook');

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

Adding the grunt.loadNpmTasks call, I'm able to get past that issue. The problem is, now I'm getting

Task "clean" not found. Use --force to continue.

Looking at the rest of the grunt file, i don't see a register task for clean. If I go to the mean.io docs, it looks like the build is failing. Perhaps this is part of why? I think I asked mean-cli for gulp version, that's probably why. I'll delete and take it from the top :)

Upvotes: 1

Related Questions