在使用karma和jenkins运行我的angular2单元测试时,我看到以下错误。
我在本地计算机(Windows)上运行时运行正常,但是在Linux上通过jenkins运行测试时出现以下错误。
Missing error handler on `socket`.
TypeError: (msg || "").replace is not a function
at /home/hudson/.hudson/jobs/workspace/pjt/node_modules/karma/lib/reporter.js:45:23
我的测试从未开始任何可能导致此问题的想法。我看了一下业力源代码,我无法弄清楚为什么会出现问题。
return function (msg, indentation) {
// remove domain and timestamp from source files
// and resolve base path / absolute path urls into absolute path
msg = (msg || '').replace(URL_REGEXP, function (_, prefix, path, __, ___, line, ____, column) {
if (prefix === 'base') {
path = basePath + path
}
// more code here ...
我使用PhantomJS作为测试运行员,以防本地和jenkins相关。
我很感激任何关于可能出现问题的指示。
答案 0 :(得分:3)
回答我自己的问题。
原来问题出在我的业力档案部分。
{ pattern: 'node_modules/rxjs/bundles/rx.js', included: true, watched: true }
rx模块的文件名是node_modules / rxjs / bundles / Rx.js
由于linux区分大小写,这就是它在Windows开发环境中运行并在linux构建服务器上失败的原因。
rx.js文件的404消息存在于日志中,但我错过了许多其他调试日志记录。
经验教训:)
答案 1 :(得分:2)
对于https://github.com/juliemr/ng2-test-seed之后的任何人,在我的情况下,由于这行代码而发生此错误: https://github.com/juliemr/ng2-test-seed/blob/master/karma-test-shim.js#L31
将其更新为
System.import('angular2/src/platform/browser/browser_adapter')
将解决问题。
希望它可以帮到某人。