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

Karma error when running angular2 tests via jenkins on linux

当 运行使用 karma 和 jenkins 对我的 angular2 单元进行测试时,我看到了以下错误。

我的测试 运行 当我 运行 在我的本地机器 (windows) 上测试时很好,但是当 运行 在 [=25= 上通过 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

我的测试从未开始,不知道是什么原因造成的。看了karma源码,想不通为什么会出问题

  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 作为测试 运行ner 以防它在本地和 jenkins 上都相关。

如有任何关于可能是什么问题的指示,我将不胜感激。

回答我自己的问题。

原来问题出在我的业力文件部分。

  { pattern: 'node_modules/rxjs/bundles/rx.js', included: true, watched: true }

rx 模块的文件名为 node_modules/rxjs/bundles/Rx.js

由于 linux 区分大小写,这就是它在 windows 开发环境中工作而在 linux 构建服务器上失败的原因。

rx.js 文件的 404 消息出现在日志中,但我错过了许多其他调试日志记录。

经验教训:)

对于 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')

将纠正问题。 希望对大家有帮助。