在Linux上通过jenkins运行angular2测试时出现Karma错误

时间:2016-03-05 17:50:31

标签: angular karma-runner karma-jasmine

在使用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相关。

我很感激任何关于可能出现问题的指示。

2 个答案:

答案 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')

将解决问题。 希望它可以帮到某人。