Karma抛出错误:无法加载“ng-html2js”,它未注册

时间:2013-09-28 16:36:07

标签: angularjs karma-runner 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 个答案:

答案 0 :(得分:50)

在我的情况下,问题与karma config karma-ng-html2js-preprocessor部分中缺少plugins有关。在教程中,我看到你不需要在插件中添加'ng-html2js',但对我而言没有它就无法工作。

答案 1 :(得分:22)

如果您正在启动并运行全局安装的Karma,一个安装了-g标志的安装,并且在未指定路径的情况下运行,即karma start path/to/config.js,那么请确保插件也是全局安装的,即npm install -g karma-ng-html2js-preprocessor

如果您正在运行本地安装的Karma,即path/to/karma start path/to/config.js,请确保插件也在本地安装到该应用程序。

答案 2 :(得分:9)

在文档中查看Loading Plugins

如果省略plugins属性,它会尝试加载以下所有插件:

  1. karma-为前缀。
  2. karma npm模块的兄弟姐妹。
  3. 所以如果您的文件结构是:

    - 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 updatenpm uninstall - > npm install
    3. 您是否拥有覆盖本地版本的karma-x的全球版本?

答案 3 :(得分:0)

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

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

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

node_modules显然将在您cd AwesomeKarmaTests并运行npm install时创建。{/ p> 然后

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错误。那是我意识到自己的错误。

然后我改变了方法。我开始使用以下命令运行我的测试,明确指定karma本地安装的路径。

来自./node_modules/karma/bin/karma start karma.conf.js目录的

AwesomeKarmaTests。正如其他几篇文章所述,业力确实选择了它的兄弟包和插件。

所以请记住,在依赖其他本地安装的插件或软件包时,请使用karma软件包的本地版本,否则karma将拥有无法确定你想要它做什么。