web-dev-qa-db-ja.com

Angular 6およびkarma「「@ angular-devkit / build-angular」をロードできません。登録されていません」

最新のangularバージョンに移行する必要がありました。その後、カルマテストは動作を停止し、エラーログを押しつぶし続けます。

14 04 2018 14:17:00.453:エラー[前処理]:「@ angular-devkit/build-angular」をロードできません。登録されていません!おそらくあなたはいくつかのプラグインが欠落していますか?

...\parkandrest-ui\node_modules\@ angular-devkit\build-angular\src\angular-cli-files\plugins\packages\angular_devkit\build_angular\src\angular-cli-files\plugins\karma.ts:52 const options = config.buildWebpack.options; ^ TypeError:init(...\parkandrest-ui\node_modules\@ angular-devkit\build-angular\src\angular-cli-files\plugins\packages\angular_devkit\build_angular\srcで未定義のプロパティ「オプション」を読み取ることができません\ angular-cli-files\plugins\karma.ts:52:39)Array.invoke(...\parkandrest-ui\node_modules\di\lib\injector.js:75:15)at Injector.get(。 ..\parkandrest-ui\node_modules\di\lib\injector.js:48:43)at E:\ Workspace\Training\spring-boot-tutorial\parkandrest-ui\node_modules\karma\lib\server.js:166 :20 in Array.forEach()at Server._start(...\parkandrest-ui\node_modules\karma\lib\server.js:165:21)at Injector.invoke(...\parkandrest-ui\node_modules\di\lib\injector.js:75:15)Server.start(...\parkandrest-ui\node_modules\karma\lib\server.js:126:18)at Object.

私のkarma.conf.jsファイルは次のようになります。

module.exports = function (config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine', '@angular-devkit/build-angular'],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-jasmine-html-reporter'),
      require('karma-coverage-istanbul-reporter'),
      require('@angular-devkit/build-angular/plugins/karma')
    ],
    client:{
      clearContext: false // leave Jasmine Spec Runner output visible in browser
    },
    files: [
      { pattern: './src/test.ts', watched: false }
    ],
    preprocessors: {
      './src/test.ts': ['@angular-devkit/build-angular']
    },
    mime: {
      'text/x-TypeScript': ['ts','tsx']
    },
    coverageIstanbulReporter: {
      dir: require('path').join(__dirname, 'coverage'), reports: [ 'html', 'lcovonly' ],
      fixWebpackSourcePaths: true
    },
    angularCli: {
      config: './angular.json',
      environment: 'dev'
    },
    reporters: config.angularCli && config.angularCli.codeCoverage
              ? ['progress', 'coverage-istanbul']
              : ['progress', 'kjhtml'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false
  });
};

@ angular-devkit\build-angularはもちろんインストールされます。私は助けに感謝します。

編集:私は実際に私の質問に対するユーザーの回答のほとんどを自分のものと組み合わせるソリューションを持っています。まず、プロジェクト全体を安定したangular 6リリースに更新しました。次に、@ R.Richardsが提案したような空のプロジェクトを生成し、古いプロジェクトのほぼすべての構成を新しい構成に置き換えました。最後に、@ Suvenduが警告する問題に遭遇しました。私は彼の解決策を使ってそれを解決しました。残念ながら、私の環境(Intellij IDEA 2017.3.4 Ultimate)にはまだ問題があり、IDEからカルマテストを直接開始できません(同じエラー@スベンドゥは言及していますが、それは次の質問のトピックです。

19
pokemzok

Karma.conf.jsを移動しなければならなかったため、私のソリューションは少し異なっていました。

  1. すべての依存関係を更新し、アプリ自体が意図したとおりに動作することを確認します
  2. まだ行われていない場合:karma.conf.jsで@angular/cliのすべての出現を@angular-devkit/build-angularで置き換える
  3. Karma.conf.jsからfilesおよびpreprocessor構成を完全に削除します。これはすべてangle.jsonで定義されており、@ anguler-devkit karmaプラグインによって自動的に処理される必要があります。
27

モジュール「@ angular-devkit/build-angular」が見つかりませんでした

ここに私のプロジェクトで働いたものがあります:

  1. npm install -g @ angular/cli
  2. npm install @ angular/cli
  3. ng update @ angular/cli --migrate-only --from = 1.7.0
  4. ng update @ angular/core
  5. npm install rxjs-compat
  6. サーブ

これがお役に立てば幸いです!

9

Npmでkarma-webpackをインストールしてから、プラグイン配列に追加してみてください-

 plugins: [
  ...
  require('karma-webpack'),
  ...
],

プリプロセッサをこれに置き換えます-

preprocessors: {
  './src/test.ts': ['webpack']
},

これは私の場合はうまくいきましたが、以下の予想される将来のエラーでも機能します-

エラー: '@ angular-devkit/build-angular/plugins/karma' karmaプラグインはAngular CLI内から使用することを意図しており、外部では正しく機能しません。

お役に立てれば。

2
Suvendu

私にとっての解決策は、NODE_ENV環境変数が「実動」に設定されていたことです。 Angular 6にアップグレードしようとしたときに、実稼働環境にインストールされていないdevDependenciesに@ angular-devkit/build-angularがリストされていることに気付きませんでした。

「unset NODE_ENV」を実行し、/ etc/environmentからNODE_ENVを削除すると、問題が解決しました。 (注:実際の実稼働環境では、この変数の変更に注意してください)。

2
Scott Reed

このガイド に従ってプロジェクトをクリーンに移行し、同じ問題を解決しました。

2
René