web-dev-qa-db-fra.com

Erreur Grunt: impossible de trouver le module 'load-grunt-tasks'

Lorsque j'utilise la commande grunt, l'erreur suivante est affichée:

$ 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

J'ai déjà essayé - npm install, commandes de mise à jour de npm. Ce serait génial si quelqu'un peut m'aider avec ça. Merci!

Ajout du contenu de 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']);
};
44
silent_programmer

Essayez de courir:

$ npm install

Après cela, si vous l'exécutez et que l'erreur persiste ou s'il y en a une autre, vous n'avez probablement pas installé Ruby, Compass ou les deux :)

50
Roland Hudák

J'ai eu le même problème, le problème pour moi était dans mon package.json où je n'ai pas réellement installé le package NPM requis et il n'a pas été installé automatiquement comme prévu auparavant. Essayer de faire

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

Si cela ne fonctionne pas, vous pouvez également fournir le fichier package.json afin que nous puissions obtenir un peu plus d'informations.

39
David J. Davis

J'avais le même problème que vous, il semble que le fichier de données manquant manque l'étape d'initialisation requise.

En changeant ceci:

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

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

pour ça:

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

grunt.loadNpmTasks('grunt-hook');

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

En ajoutant l'appel grunt.loadNpmTasks, je suis capable de surmonter ce problème. Le problème est, maintenant je reçois

Tâche "propre" non trouvée. Utilisez --force pour continuer.

En regardant le reste du fichier Grunt, je ne vois pas une tâche de registre pour nettoyer. Si je vais à la mean.io docs , il semble que la construction échoue. Peut-être que cela fait partie de pourquoi? Je pense avoir demandé à mean-cli la version gulp, c'est probablement pour cette raison. Je vais le supprimer et le prendre par le haut :)

1
Bennett Dill

Je pense que le problème est lié au lieu où les dépendances npm sont déclarées et à la façon dont Heroku les gère. En quelques mots, vérifiez si les packages npm sont des dépendances de dev et déplacez-les vers le bloc des dépendances, comme suggéré ici: https://stackoverflow.com/a/20687098/532912 .

1
Paolo Carrasco