Node / NPM / Grunt在jscs上失败(grunt-jscs)

我有一个在JS代码基础上运行JSCS的grunt任务,它一直在工作,直到与使用最新,稳定版本的grunt,npm / node的构build服务器集成为止。

在npm 1.XX.X下全部运行正常,但在升级到2.XX.X后, 我尝试了最新的3.XX.X,并且以与2.XX.X相同的方式失败。

我认为所需的相关部分是

cli输出:

$ node -v v5.2.0 $ npm -v 3.3.12 $ grunt --version grunt-cli v0.1.13 grunt v0.4.5 $ grunt jscs Loading "jscs.js" tasks...ERROR >> TypeError: fn.call is not a function Warning: Task "jscs" not found. Use --force to continue. Aborted due to warnings. 

的package.json:

 { "name": "Javascript", "version": "1.0.0", "private": true, "devDependencies": { "grunt": "~0.4.5", "matchdep": "^0.3.0", "grunt-contrib-watch": "~0.6.1", "grunt-express": "~1.4.1", "grunt-open": "~0.2.3", "grunt-chmod": "~1.0.3", "grunt-contrib-jshint": "~0.11.3", "grunt-contrib-uglify": "~0.10.0", "karma": "~0.13.15", "grunt-karma": "~0.12.1", "jasmine-core": "~2.3.4", "karma-jasmine": "~0.3.6", "phantomjs": "~1.9.18", "karma-phantomjs-launcher": "~0.2.1", "angular-mocks": "~1.2.28", "jquery": "~2.1.4", "underscore": "~1.8.3", "grunt-contrib-clean": "~0.6.0", "karma-coverage": "~0.5.3", "grunt-jscs": "~2.3.0", "grunt-contrib-concat": "~0.5.1" } } 

Gruntfile.jsconfiguration:

 module.exports = function (grunt) { require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); grunt.initConfig({ ..... jscs: { src: [ 'gruntfile.js', '<%= sourceFolder %>/**/*.js', '!<%= sourceFolder %>/angular/**', '!<%= sourceFolder %>/es5-shim/**', '!<%= sourceFolder %>/**/*[.-]min.js', '!<%= sourceFolder %>/respond/*.js', '!<%= sourceFolder %>/angular-ui-bootstrap/*.js', '!<%= sourceFolder %>/analytics/angulartics*.js' ], options: { config: '.jscsrc', fix: true } } }); 

刚刚创build了一个testing项目,我能够重现这个问题。 这是在这一行:

 require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); 

使用load-grunt-tasks来代替:

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

另外运行npm i --save-dev load-grunt-tasks ,你很好走!

grunt-express项目存在导致此失败的依赖项。 grunt-express在2年之内还没有发布,因此我select了grunt-contrib-connect并使用它来解决我的问题! 希望它能帮助遇到这个问题的任何人。

每当我build立与node.js / npm升级有关的问题时,10/10是一个错误的依赖。

尝试将grunt-jscs依赖关系碰撞到2.5: https : grunt-jscs

在服务器上: npm install jscs -g