2015-12-09 19 views
7

JSCSをjavascriptコードベースで実行するgruntタスクがあり、最新の安定版を使用しているビルドサーバーと統合する時間が来るまで働いていました無駄な、npm /ノードの。jscs(grunt-jscs)でノード/ NPM/Gruntが失敗する

これはnpm 1.XX.Xの下ですべて正常に動作しましたが、2.XX.Xにアップグレードした後に破損しました。私は最新の3.XX.Xを試しましたが、それは2.XX.Xと同じ方法で失敗しました。

$ 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.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 
     } 
    } 
}); 
+0

jscsがインストールされ、ビルドサーバーで動作していると思いますか? – kuzyn

+0

問題は、以前のバージョンのnode/npmをローカルで実行していて、その環境で動作するビルドが動作しなかったことでした。したがって、ビルドサーバーは動作しません。ローカル〜1.Xノード/ npmで正常に動作します。 – Mutmatt

+0

node_modulesを完全に削除して、npmキャッシュをクリアして、プロジェクトの新しい 'npm install'をやってみましたか? – kuzyn

答えて

0

grunt-expressこのプロジェクトには、この障害の原因となる依存関係があります。 grunt-expressは2年以上でリリースされていないので、私はgrunt-contrib-connectに移動し、その代わりにこれを使用してこれを解決しました。 この問題に遭遇している人に役立つことを願っています。

-1

私は必要な関連部分を想定しては

CLI出力されます私がビルドするたびにnode.js/npmのアップグレードに関連する問題です.10/10回は依存関係に問題があります。

は2.5へgrunt-jscs依存関係をぶつけてみてください。 https://www.npmjs.com/package/grunt-jscs

+0

それは助けていないようだと思われる:/ – Mutmatt

+0

エラー出力の違いはありますか?できるだけ多くのものをぶつけてみてください。あなたはノード/ npmの最先端バージョンを実行しています。私は4.xシリーズに飛び乗って、もう一度作業を始めるには1トンのものが必要でした。私は、不平を言うのは同じ話ですね。 – staypuftman

+0

アップデートを確認するために[ncu](https://www.npmjs.com/package/npm-check-updates)を使用しましたが、最新でないものはすべて角度のモックです(これは、角度の古いバージョン)。同じエラー – Mutmatt

-1

サーバー上:npm install jscs -g

+0

は実際にはローカルでは動作しない理由を説明していません。また、package.jsonに追加しない方が良いでしょう。 – Mutmatt

+0

一般にリンター型ツール(jshint、jscsなど)をグローバルにインストールすることは認められており、JSCSが推奨するものはhttps://github.com/jscs-dev/node-jscs/issues/863を参照してください。なぜそれがローカルではうまくいかないのか、私はセットアップ/質問を誤解していると思います – kuzyn

+0

jscsをグローバルにインストールすると何か助けにならなかった – Mutmatt

1

は単なるテストプロジェクトを作成し、私は問題を再現することができました。

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

またnpm i --save-dev load-grunt-tasksを実行して、あなたが行ってもいいです:代わりに

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

使用load-grunt-tasks:それはこのラインであります!

+0

@Mutmattはあなたのためにこの仕事をしていませんでしたか? – Louy

+0

これはトリックをしていないようだ。私はまだまったく同じエラーが発生しています – Mutmatt

+0

'npm prune'を実行できますか? – Louy

関連する問題