Ответ 1
В моих случаях проблема была связана с отсутствием разделов karma-ng-html2js-preprocessor
внутри karma config plugins
. В учебниках я видел, что вам не нужно добавлять 'ng-html2js'
внутри плагинов, но для меня это не работает без него.
Я получаю сообщение об ошибке при запуске karma start
:
$ karma start
INFO [karma]: Karma v0.10.2 server started at http://localhost:9876/
INFO [launcher]: Starting browser Chrome
WARN [preprocess]: Can not load "ng-html2js", it is not registered!
Perhaps you are missing some plugin?
...
Но в моем файле пакета у меня есть "karma-ng-html2js-preprocessor": "*",
, и папка с кодом для этого препроцессора существует в node_modules
.
Любые идеи о том, как решить проблему?
В моих случаях проблема была связана с отсутствием разделов karma-ng-html2js-preprocessor
внутри karma config plugins
. В учебниках я видел, что вам не нужно добавлять 'ng-html2js'
внутри плагинов, но для меня это не работает без него.
Если вы запускаете и запускаете глобальную установку Karma, которая установлена с флагом -g
и запускается без указания пути, то есть karma start path/to/config.js
, убедитесь, что плагины также установлены глобально, т.е. npm install -g karma-ng-html2js-preprocessor
.
Если вы используете локальную установку Karma, т.е. path/to/karma start path/to/config.js
, убедитесь, что плагин также установлен локально для этого приложения.
Откройте Загрузка плагинов в документах.
Если вы опустите свойство plugins
, оно попытается загрузить все плагины, которые:
karma-
.karma
npm.Итак, если ваша файловая структура:
- node_modules
- karma
- karma-chrome-launcher
- karma-firefox-launcher
... так как karma-chrome-launcher
и karma-firefox-launcher
являются братьями и сестрами для модуля karma
, который используется, и поскольку оба они начинаются с karma-
, они будут загружаться автоматически.
Но будьте осторожны - если у вас есть свойство plugins
, оно будет загружать только те вещи, которые определены. То есть. если у вас есть plugins: ['karma-chrome-launcher']
, он не загрузит karma-firefox-launcher
.
Некоторые вопросы, которые нужно задать себе:
karma
или глобальную версию?npm update
или npm uninstall
→ npm install
.karma-x
, которые переопределяют локальные?Я видел слишком много разных ответов. И мне пришлось попробовать все разные методы, чтобы наконец понять, что происходит. У меня не было раздела plugins:
в моем karma.conf.js
.
Итак, у меня есть проект AwesomeKarmaTests
, который содержит все файлы внутри папки с тем же именем.
AwesomeKarmaTests
\package.json
\karma.conf.js
\node_modules
\karma
\karma-jasmine
...
Каталог node_modules
, очевидно, будет создан, когда вы cd AwesomeKarmaTests
и запустите npm install
.
npm
затем просматривает содержимое package.json
в папке, из которой он был вызван, и при необходимости установите все перечисленные пакеты и дополнительные зависимости.
Содержание моего package.json
{
"name": "AwesomeKarmaTests",
"version": "1.0.0",
"devDependencies": {
"karma": "^1.6.0",
"karma-jasmine": "^1.1.0",
"karma-junit-reporter": "^1.2.0",
"karma-ng-html2js-preprocessor": "^1.0.0",
"karma-phantomjs-launcher": "^1.0.4"
}
}
Я столкнулся с этой проблемой (Can not load "ng-html2js"
) изначально, потому что karma
был установлен глобально в моей системе. Установка global karma
будет пытаться искать пакет karma-ng-html2js-preprocessor
глобально, и он, очевидно, не сможет найти его, поскольку я не установил предварительный процессор во всем мире.
И я не мог понять, что происходит, поскольку каждый из devDependencies
в package.json
уже был установлен в каталог node_modules
внутри корневой папки проекта.
Я продолжал работать karma start
из AwesomeKarmaTests
, не понимая, что это была глобальная установка кармы, которая выполнялась (глупо меня).
Однако после удаления karma
из моей глобальной установки я начал получать ошибки /c/Users/fastasticUser/AppData/Roaming/npm/karma: No such file or directory
. Это было тогда, когда я осознал свою ошибку.
Затем я изменил свой подход. Я начал выполнять свои тесты с помощью следующей команды, явно указывая путь локальной установки кармы.
./node_modules/karma/bin/karma start karma.conf.js
из каталога AwesomeKarmaTests
. И, как упоминалось в нескольких других сообщениях, карма действительно выбирала свои пакеты для сиблинга и плагины.
Поэтому не забудьте использовать локальные версии пакета karma
, если полагаться на другие плагины или пакеты локально, иначе karma
будет сложно определить, что вы хочу, чтобы это делалось.