我有一个用Typescript编写的Angular 2项目。我想让Travis CI成立。不幸的是,我收到了来自Karma的错误:
socket
上缺少错误处理程序。TypeError:(msg ||“”).replace不是函数
My Travis CI构建完成定义的Jasmine单元测试,报告运行次数和成功与失败。
这是我的构建日志的输出。 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
可能导致此问题的任何想法,或者您可能需要调试此信息的哪些信息?
答案 0 :(得分:2)
我过去曾见过类似的问题。 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项目设置业力测试,我发现在创建业力垫片时非常有帮助。