39

运行时出现错误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

4 回答 4

51

在我的情况下,问题与缺少karma-ng-html2js-preprocessor内部业力配置plugins部分有关。在教程中我看到你不需要添加'ng-html2js'内部插件,但对我来说没有它就行不通。

于 2013-09-29T12:17:16.793 回答
23

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

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

于 2013-09-28T16:53:57.837 回答
10

查看文档中的加载插件

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

  1. 前缀为karma-.
  2. karmanpm 模块的兄弟。

因此,如果您的文件结构是:

- 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您是否有覆盖本地版本的全球版本?
于 2015-07-16T19:24:51.900 回答
1

我已经看到了太多关于这个的不同类型的答案。我不得不尝试所有不同的方法来最终了解发生了什么。我的也没有一个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安装。全局安装会尝试全局查找包,但显然找不到它,因为我没有全局安装预处理器。 karmakarma-ng-html2js-preprocessor

而且我无法理解发生了什么,因为其中的每一个devDependenciespackage.json已经安装在node_modules项目根文件夹内的目录中。我一直karma startAwesomeKarmaTests文件夹中运行,却没有意识到正在执行的是全球安装的业力(我很傻)。

但是,karma从我的全局安装中卸载后,我开始收到/c/Users/fastasticUser/AppData/Roaming/npm/karma: No such file or directory错误。那是我意识到我的错误的时候。

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

./node_modules/karma/bin/karma start karma.conf.jsAwesomeKarmaTests目录。正如在其他几篇文章中提到的,业力确实选择了它的兄弟包和插件。

因此,在依赖其他本地安装的插件或包时,请记住使用包的本地版本,否则将无法识别您想要它做什么。karmakarma

于 2017-04-26T08:31:15.757 回答