Угловое 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.
- Обновите все зависимости и убедитесь, что приложение работает как задумано
- Если это уже не сделано: замените каждое появление
@angular/cli
на @angular-devkit/build-angular
angle в файле karma.conf.js - Полностью удалить
files
и конфигурацию preprocessor
из karma.conf.js. Все это определено в angular.json и должно обрабатываться автоматически с помощью плагина karma @anguler-devkit.
Ответ 2
Не удалось найти модуль "@angular-devkit/build-angular"
вот что сработало для моего проекта:
- npm install -g @угловой /cli
- npm install @angular/cli
- ng update @angular/cli -migrate-only --from = 1.7.0
- ng update @angular/core
- npm install rxjs-compat
- 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 исправили мою проблему. (Примечание: будьте осторожны, изменяя эту переменную в реальной производственной среде).