噶发生错误:无法加载“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

任何想法如何解决这个问题?

在我的情况下,这个问题与缺乏karmaconfigurationplugins部分中的karma-ng-html2js-preprocessor 。 在教程中,我看到你不需要在插件中添加'ng-html2js' ,但是对我来说,没有它,就不能工作。

如果你正在启动和运行一个全球性的Karma安装,一个安装了-g标志,并且运行时没有指定path,例如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-为karma-
  2. karma npm模块的兄弟姐妹。

所以如果你的文件结构是:

 - node_modules - karma - karma-chrome-launcher - karma-firefox-launcher 

因为karma-chrome-launcherkarma-firefox-launcher是正在使用的karma模块的兄弟姐妹,因为他们都karma-开始,他们会自动加载。


但要小心 – 如果你有定义的plugins属性,它只会加载定义的东西。 IE浏览器。 如果你有plugins: ['karma-chrome-launcher'] ,它不会加载karma-firefox-launcher


有些问题要问自己:

  1. 你使用的是karma本地版本还是全球版本?
  2. 一切都是最新的? 如果没有尝试npm update或者npm uninstall – > npm install
  3. 你有覆盖当地的全球版本的karma-x吗?

我已经看到了太多不同types的答案。 我不得不尝试所有不同的方法来最终理解发生了什么事情。 我的karma.conf.js也没有plugins:部分。

所以我有一个项目AwesomeKarmaTests ,其中包含同名文件夹内的所有文件。

 AwesomeKarmaTests \package.json \karma.conf.js \node_modules \karma \karma-jasmine ... 

当你cd AwesomeKarmaTests并运行npm install时, node_modules目录显然会被创build。

然后, 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包,而且显然无法find它,因为我没有安装全局预处理器。

而且我不明白发生了什么事情,因为package.json中的node_modules都已经安装在项目根文件夹中的node_modules目录中。 我一直从AwesomeKarmaTests文件夹karma start运行karma startAwesomeKarmaTests没有意识到这是正在执行的业力的全球安装(愚蠢的我)。

然而,从我的全球安装卸载后,我开始得到/c/Users/fastasticUser/AppData/Roaming/npm/karma: No such file or directory错误。 那是当我意识到我的错误。

然后我改变了我的方法。 我开始运行我的testing使用以下命令,显式指定本地安装的业力的path。

./node_modules/karma/bin/karma start karma.conf.jsAwesomeKarmaTests目录./node_modules/karma/bin/karma start karma.conf.js 。 正如其他几个post中提到的,业力的确select了兄弟的包和插件。

所以记得在依赖其他本地安装的插件或者软件包的时候使用karma包的本地版本,否则karma将无法识别你想要做什么。