Карма выдает ошибку: не удается загрузить 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.

Есть идеи, как решить проблему?


person Ph0en1x    schedule 28.09.2013    source источник
comment
На всякий случай попробуйте зайти в папку, содержащую ваш package.json, и проделать там npm install.   -  person M.K. Safi    schedule 28.09.2013
comment
package.json помещен в корень   -  person Ph0en1x    schedule 28.09.2013


Ответы (4)


В моем случае проблема была связана с отсутствием karma-ng-html2js-preprocessor внутри разделов plugins karma config. В обучающих материалах я видел, что вам не нужно добавлять 'ng-html2js' внутри подключаемых модулей, но для меня это не работает без этого.

person Ph0en1x    schedule 29.09.2013
comment
Образец кода был бы хорош. Хотя у меня сработало. - person GC_; 23.04.2018

Если вы запускаете и запускаете глобальную установку Karma, которая установлена ​​с флагом -g и запускается без указания пути, то есть karma start path/to/config.js, то убедитесь, что плагины также установлены глобально, то есть npm install -g karma-ng-html2js-preprocessor.

Если вы используете локальную установку Karma, то есть path/to/karma start path/to/config.js, убедитесь, что плагин также установлен локально для этого приложения.

person M.K. Safi    schedule 28.09.2013
comment
да, плагины для приложения устанавливаются локально. И выполняю karma run из корня приложения. - person Ph0en1x; 28.09.2013
comment
Я думаю, что когда вы делаете karma run от root, вы фактически запускаете глобальную установку karma. У вас он тоже установлен глобально? - person M.K. Safi; 28.09.2013
comment
нет, я уверен, что использую локальные версии из-за ссылок в webstorm - person Ph0en1x; 28.09.2013
comment
Попробуйте установить все глобально, карму и все ее плагины. Посмотрим, поможет ли это. - person M.K. Safi; 28.09.2013
comment
Также убедитесь, что в вашем файле karma-config.js есть что-то вроде preprocessors: {'tpl/*.html': 'ng-html2js'}. - person M.K. Safi; 29.09.2013
comment
Чтобы использовать локальную копию karma, я помещаю "test": "karma start", в раздел сценария в моем package.json. - person zjk; 10.05.2016

См. Загрузка подключаемых модулей в документации.

Если вы опустите свойство plugins, он попытается загрузить все плагины, которые:

  1. С префиксом karma-.
  2. Родственник модуля 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.


Некоторые вопросы, которые стоит задать себе:

  1. Вы используете локальную версию karma или глобальную версию?
  2. Все ли обновлено? Если нет, попробуйте npm update или npm uninstall -> npm install.
  3. У вас есть глобальные версии karma-x, которые заменяют локальные?
person Adam Zerner    schedule 16.07.2015

Я видел слишком много разных ответов по этому поводу. И мне пришлось попробовать все разные методы, чтобы наконец понять, что происходит. У меня в karma.conf.js тоже не было раздела plugins:.

Итак, у меня есть проект 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 был установлен глобально в моей системе. При глобальной 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, полагаясь на другие локально установленные плагины или пакеты, иначе karma не сможет определить, что вы хотите от него делать.

person Eakan Gopalakrishnan    schedule 26.04.2017