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']);
};
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 :)
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.
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 :)
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 .