2

プロジェクトの足場として cg-angular を使用しています。

templateUr と ng-html2js を使用してテンプレートをモジュールにロードするディレクティブをテストしています。ブラウザとして Chrome を使用してテストを実行すると問題はありませんが、Phantom で実行すると次のようになります。

Error: [$injector:modulerr] Failed to instantiate module templates due to:

私のGruntfileの関連部分は次のとおりです。

karma:      {
     options:     {
         frameworks:           ['jasmine'],
         preprocessors:        {'directive/**/*.html':['ng-html2js']},
         files:                [  //this files data is also updated in the watch handler, if updated change there too
             '<%= dom_munger.data.appjs %>',
             'bower_components/angular-mocks/angular-mocks.js',
             'directive/**/*.html',
             createFolderGlobs(['*-spec.js'])
         ],
         ngHtml2JsPreprocessor:{
             moduleName:'templates'
         },
         logLevel:             'ERROR',
         reporters:            ['mocha'],
         autoWatch:            false, //watching is handled by grunt-contrib-watch
     },
     all_tests:   {
         browsers: ['PhantomJS', 'Chrome'],
         singleRun:false
     },
     during_watch:{
         browsers: ['PhantomJS'],
         singleRun:true
     }
 }

そのため、karma:all_tests を実行する grunt テストを実行すると、チャンピオンのように機能します。karma:during_watch を実行する grunt serve が失敗します。

html2jsが実際に実行されているかどうかを確認する方法はありますか?

編集 ファントムではありません。「during_watch」タスクで Chrome を実行すると、それも失敗します。

4

1 に答える 1

1

理解した。このプロジェクトの足場として generator-cg-angular を使用しています。grunt ウォッチ イベントを使用して、いくつかのオプションを設定します。このイベントは、サーブ タスク中にのみ使用され、テストまたはビルド中には使用されません。karma.options を上書きしていることに気付かなかったので、html2js が呼び出されることはありませんでした。これを Gruntfile のイベント セクションに追加すると、html2js が正常に実行されます。以下は、変更を示す私の Gruntfile の関連セクションです。

if (grunt.file.exists(spec)) {
    var files = [].concat(grunt.config('dom_munger.data.appjs'));
    files.push('bower_components/angular-mocks/angular-mocks.js');
    files.push(spec);
    files.push('directive/**/*.html'); // This one
    grunt.config('karma.options.files', files);
    grunt.config('karma.options.ngHtml2JsPreprocessor.moduleName', 'templates'); // And this one
    tasksToRun.push('karma:during_watch');
}
于 2014-11-03T15:18:51.707 に答える