运行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
中存在包含此预处理器代码的文件夹。
关于如何解决问题的任何想法?
答案 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
属性,它会尝试加载以下所有插件:
karma-
为前缀。karma
npm模块的兄弟姐妹。所以如果您的文件结构是:
- node_modules
- karma
- karma-chrome-launcher
- karma-firefox-launcher
...由于karma-chrome-launcher
和karma-firefox-launcher
是正在使用的karma
模块的兄弟,因为它们都以karma-
开头,所以它们会自动加载
但要小心 - 如果你做定义了plugins
属性,它只会 加载定义的东西。 IE浏览器。如果您有plugins: ['karma-chrome-launcher']
,则无法加载karma-firefox-launcher
。
要问自己一些问题:
karma
的本地版本还是全球版本?npm update
或npm uninstall
- > npm install
。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
将拥有无法确定你想要它做什么。