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

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

4 ответа

Решение

В моих случаях проблема была связана с отсутствием karma-ng-html2js-preprocessor внутри конфигурации кармы 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 свойство, он попытается загрузить все плагины, которые:

  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 которые преобладают над местными?

Я видел слишком много разных типов ответов по этому поводу. И мне пришлось попробовать все возможные методы, чтобы наконец понять, что происходит. У меня не было 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 был установлен глобально в моей системе. Глобальный 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 будут проблемы с определением того, что вы хотите сделать.

Другие вопросы по тегам