我试图在一个项目上运行业力,以及它在运行junit报告时的崩溃,尽管它在配置类似的机器中与相同的项目一起工作。
当试图逃跑时
karma start '<path-to>/karma.conf.js' --reporters junit --single-run --junitReporter.outputFile karmaoutpu我得到了这个回溯:
INFO [karma]: Karma v0.12.17 server started at http://localhost:9876/
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.9.2 (Linux)]: Connected on socket fAqoa8mrX6WgaHTam1Ut with id 5898608
ERROR [karma]: [TypeError: Cannot call method 'push' of undefined]
TypeError: Cannot call method 'push' of undefined
at [object Object].onBrowserStart (<project-path>/node_modules/karma/lib/reporters/base.js:14:20)在检查base.js文件时,我看到了以下片段:
this.onRunStart = function() {
this._browsers = [];
};
this.onBrowserStart = function(browser) {
this._browsers.push(browser); // <this._browsers is undefined here!>
};如果我强制在this._browsers内部启动onBrowserStart数组,我会在其他地方得到其他错误--但这告诉我onRunStart没有被调用--所以我可能缺少了一些初始化。它可能会失败,因为相同的项目和相同版本的Node包可以在Ubuntu系统中工作(我在Fedora 20上)。
另一方面,dots记者的插件工作得很完美。
业力版本,以及安装了与业力相关的包:
karma 0.12.17
├─┬ karma-chai@0.0.1
│ └── chai@1.6.1
├── karma-chrome-launcher@0.1.4
├─┬ karma-coffee-preprocessor@0.1.3
│ └─┬ coffee-script@1.7.1
│ └── mkdirp@0.3.5
├── karma-firefox-launcher@0.1.3
├── karma-html2js-preprocessor@0.1.0
├── karma-jasmine@0.1.5
├─┬ karma-junit-reporter@0.1.0
│ └── xmlbuilder@0.4.2
├── karma-mocha@0.1.6
├── karma-phantomjs-launcher@0.1.4
├── karma-requirejs@0.2.2
├── karma-script-launcher@0.1.0
...
├─┬ phantomjs@1.9.2-2发布于 2014-07-24 17:12:03
事实证明,这个问题是由junit的旧版本--记者模块--导致的--我没有使用新的karma版本--其他没有面临这个问题的开发人员也在运行旧的业力。
它被记录在这里的项目:https://github.com/karma-runner/karma-junit-reporter/issues/11
https://stackoverflow.com/questions/24919053
复制相似问题