7

JavaScriptコードベースでJSCSを実行する面倒​​なタスクがあり、最新の安定したバージョンのgruntであるnpm/nodeを使用しているビルドサーバーと統合するまで機能していました。

これはすべて 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.

パッケージ.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.js 構成:

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
        }
    }
});
4

3 に答える 3

1

テストプロジェクトを作成したところ、問題を再現できました。それはこの行にあります:

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

代わりにload-grunt-tasksを使用してください。

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

また、実行するnpm i --save-dev load-grunt-tasksと、準備完了です。

于 2015-12-19T16:08:57.973 に答える
0

grunt-expressプロジェクトは、この失敗の原因となる依存関係を保持しています。 grunt-expressは2年以上リリースされていないためgrunt-contrib-connect、代わりに移動して使用することを選択し、これで問題が解決しました! この問題に遭遇した人の助けになることを願っています。

于 2016-03-23T23:44:19.480 に答える
-1

node.js/npm のアップグレードに関連するビルドの問題が発生するたびに、10/10 回は依存関係に問題がありました。

grunt-jscs依存関係を 2.5 に 上げてみてください: https://www.npmjs.com/package/grunt-jscs

于 2015-12-16T21:23:27.333 に答える