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

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

Missing error handler on socket.

TypeError: (msg || “”).replace is not a function

预期的行为

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

实际行为

这是我的构建日志的输出. Here是完整的构建日志.此外,here是正在构建的完整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)

环境详情

节点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

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

解决方法

我在过去看过类似的问题. 99%的时间与应用程序引用的karma.conf.js文件数组中不包含文件有关.

一个可能的问题是模块名称没有从它们各自的文件引用名称正确翻译.

这是我的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;
                  },{})
        }
    }
});

我的项目结构是:

/
 karma.conf.js
 karma-test-shim.js
 wwwroot/
         app/
             //Angular 2 project and spec files

Angular 2团队的开发人员Julie Ralph拥有一个seed project用于为Angular 2项目设置业力测试,我发现在创建业力垫片时非常有帮助.

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...