Karma不会运行(socket.io抛出错误)

Geo*_*rds 5 node.js travis-ci karma-runner angular

我有一个Angular 2项目,用Typescript编写.我想让Travis CI成立.不幸的是,我收到了来自Karma的错误:

缺少错误处理程序socket.

TypeError:(msg ||"").replace不是函数

预期的行为

我的Travis CI构建完成了定义的Jasmine Unit测试,报告了运行次数和成功与失败.

实际行为

这是我的构建日志的输出.是完整的构建日志.此外,是正在构建的完整github存储库.

[09:39:04] Starting 'client.unit_test'...
05 04 2016 09:39:04.281:INFO [karma]: Karma v0.13.22 server started at http://localhost:9876/
05 04 2016 09:39:04.287:INFO [launcher]: Starting browser Chrome
05 04 2016 09:39:05.519:INFO [Chrome 49.0.2623 (Linux 0.0.0)]: Connected on socket /#7wcOJ3uFvZX-HgZeAAAA with id 49035067
Missing error handler on `socket`.
TypeError: (msg || "").replace is not a function
  at /home/travis/build/georgeedwards/Gen-App/node_modules/karma/lib/reporter.js:45:23
  at [object Object].onBrowserError (/home/travis/build/georgeedwards/Gen-App/node_modules/karma/lib/reporters/base.js:58:60)
Run Code Online (Sandbox Code Playgroud)

环境详情

节点v5.10.0

Angular 2.0.0-beta.12

??? karma@0.13.22 
??? karma-chrome-launcher@0.1.12 
??? karma-coverage@0.2.7 
??? karma-firefox-launcher@0.1.7 
??? karma-ie-launcher@0.1.5 
??? karma-jasmine@0.3.8 
??? karma-ng-html2js-preprocessor@0.1.2 
??? karma-opera-launcher@0.1.0 
??? karma-phantomjs-launcher@0.1.4
Run Code Online (Sandbox Code Playgroud)

可能导致此问题的任何想法,或者您可能需要调试此信息的信息?

Ted*_*rne 2

我过去见过类似的问题。karma.conf.js99% 的情况下,这与应用程序引用的文件数组中未包含文件有关。

另一个可能的问题是模块名称未从其各自的文件引用名称正确转换。

karma-test-shim.js这是我将文件名翻译为模块名称的片段:

System.config({
    packages: {
        'base/wwwroot/app': {
            defaultExtension: false,
            format: 'register',
            map: Object.keys(window.__karma__.files).
                  filter(function onlyAppFiles(filePath) {
                      return /^\/base\/wwwroot\/app\/.*\.js$/.test(filePath)
                  }).
                  reduce(function createPathRecords(pathsMapping, appPath) {
                      // creates local module name mapping to global path with karma's fingerprint in path, e.g.:
                      var moduleName = appPath.replace(/^\/base\/wwwroot\/app\//, './').replace(/\.js$/, '');
                      pathsMapping[moduleName] = appPath + '?' + window.__karma__.files[appPath];
                      return pathsMapping;
                  }, {})
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

我的项目的结构是:

/
 karma.conf.js
 karma-test-shim.js
 wwwroot/
         app/
             //Angular 2 project and spec files
Run Code Online (Sandbox Code Playgroud)

Julie Ralph 是 Angular 2 团队的开发人员,有一个种子项目,用于为 Angular 2 项目设置 karma 测试,我发现该项目在创建 karma shim 时非常有帮助。