噶发生错误:无法加载“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
属性,它会尝试加载所有的插件:
- 以karma-为
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
吗?
我已经看到了太多不同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 start
, AwesomeKarmaTests
没有意识到这是正在执行的业力的全球安装(愚蠢的我)。
然而,从我的全球安装卸载后,我开始得到/c/Users/fastasticUser/AppData/Roaming/npm/karma: No such file or directory
错误。 那是当我意识到我的错误。
然后我改变了我的方法。 我开始运行我的testing使用以下命令,显式指定本地安装的业力的path。
./node_modules/karma/bin/karma start karma.conf.js
从AwesomeKarmaTests
目录./node_modules/karma/bin/karma start karma.conf.js
。 正如其他几个post中提到的,业力的确select了兄弟的包和插件。
所以记得在依赖其他本地安装的插件或者软件包的时候使用karma
包的本地版本,否则karma
将无法识别你想要做什么。