【问题标题】:Karma error when running angular2 tests via jenkins on linux通过 linux 上的 jenkins 运行 angular2 测试时出现 Karma 错误
【发布时间】:2016-03-05 17:50:30
【问题描述】:

我在使用 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

我的测试从未开始任何可能导致此问题的想法。看了下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 作为测试运行器,以防万一这在本地和 jenkins 上都相关。

我会很感激任何关于可能是什么问题的指示。

【问题讨论】:

  • 我的第一直觉是,您的本地计算机具有可用的东西,而 Jenkins 构建服务器/从属服务器上不可用。您确定 buildslave 已正确设置为能够运行测试吗?您是否尝试过在该服务器上手动运行它们?
  • @Cronax 我还没有直接访问 jenkins 机器排序的权限,但我正在获取它。我会尝试手动构建并随时通知您。

标签: angular karma-runner karma-jasmine


【解决方案1】:

回答我自己的问题。

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

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

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

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

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

经验教训:)

【讨论】:

    【解决方案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')

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

    【讨论】:

      猜你喜欢
      • 2022-11-22
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 2015-04-07
      • 1970-01-01
      • 2016-06-24
      • 2020-07-14
      • 1970-01-01
      相关资源
      最近更新 更多