Угловое 6 и карма "Невозможно загрузить" @angular-devkit/build-angular ", он не зарегистрирован '

Мне пришлось перейти на новейшую угловатую версию. После этого тесты кармы перестали работать и просто продолжали раздавить журнал ошибок:

14 04 2018 14: 17: 00.453: ОШИБКА [препроцесс]: Не удается загрузить "@angular-devkit/build-angle", он не зарегистрирован! Возможно, вам не хватает плагина?

...\parkandrest-щ\node_modules\@угловой DevKit\встроенный угловой\SRC\угловато-CLI файлы\Plugins\пакеты\angular_devkit\build_angular\SRC\угловато-CLI файлы \Plugins\karma.ts: 52 const options = config.buildWebpack.options; ^ TypeError: Невозможно прочитать параметры свойства undefined в 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) в Injector.get(...\parkandrest-ui\node_modules\di\lib\injector.js: 48: 43) в E:\Workspace\Training\spring-boot-tutorial\parkandrest-ui\node_modules\karma\lib\server.js: 166: 20 в Array.forEach() на сервере Server._start (...\parkandrest-ui\node_modules\karma\lib\server.js: 165: 21) в Injector.invoke(...\parkandrest-ui\node_modules\di\lib\injector.js: 75: 15) на сервере Server.start(...\parkandrest-ui\node_modules\karma\lib\server.js: 126: 18) в 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, конечно, установлен. Я ценю любую помощь.

EDIT: У меня есть решение, которое фактически объединяет большинство пользовательских ответов на мой вопрос с моими собственными. Во-первых, я обновил весь свой проект до стабильного углового 6 релиза. Затем я сгенерировал пустой проект, например, предложенный R.Richards, а затем заменил почти все конфигурации в моем старом проекте новым. Наконец, я столкнулся с проблемой, о которой предупреждает @Сувенду. Я использовал его решение для его решения. К сожалению, у меня все еще есть одна проблема с моей средой (Intellij IDEA 2017.3.4 Ultimate), которая запрещает мне начинать тесты кармы непосредственно с моей IDE (у меня такая же ошибка @Suvendu упоминает), однако это тема для следующий вопрос.

Ответы

Ответ 1

Мое решение было немного другим, так как мне пришлось переместить karma.conf.js.

  1. Обновите все зависимости и убедитесь, что приложение работает как задумано
  2. Если это уже не сделано: замените каждое появление @angular/cli на @angular-devkit/build-angular angle в файле karma.conf.js
  3. Полностью удалить files и конфигурацию preprocessor из karma.conf.js. Все это определено в angular.json и должно обрабатываться автоматически с помощью плагина karma @anguler-devkit.

Ответ 2

Не удалось найти модуль "@angular-devkit/build-angular"

вот что сработало для моего проекта:

  1. npm install -g @угловой /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. ng служить

Надеюсь, это сработает для вас!

Ответ 3

Попробуйте установить karma-webpack с номером npm, а затем добавьте его в массив плагинов -

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

и замените препроцессоры на это -

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

Это сработало в моем случае и будет работать и в ожидаемом будущем error-

Ошибка: плагин кармы "@angular-devkit/build-angular/plugins/karma" предназначен для использования внутри Углового CLI и не будет работать правильно за его пределами.

Надеюсь это поможет.

Ответ 4

Я последовал этому руководству, чтобы выполнить чистую миграцию проекта, который решил для меня ту же проблему.

Ответ 5

Решение для меня состояло в том, что моя переменная окружения NODE_ENV была настроена на "производство". При попытке перейти на Angular 6 я не понял, что @angular-devkit/build-angular был указан в моих devDependencies, которые не установлены в производственной среде.

Запуск "unset NODE_ENV" и удаление NODE_ENV из /etc/environment исправили мою проблему. (Примечание: будьте осторожны, изменяя эту переменную в реальной производственной среде).