这篇文章是来自我在https://github.com/frankwallis/plugin-typescript/issues/64和https://github.com/Workiva/karma-jspm/issues/112的问题的stackoverflow转发
我们计划为web ui升级我们的团队堆栈,因此我们决定:
1)使用Karma作为测试启动器,使用jasmine作为框架(之前使用mocha和自定义运行器)
2)在UMD或系统模块输出的情况下,使用TypeScript作为源代码(之前是纯Javascript )
3)使用SystemJS作为模块加载器,允许使用不同类型的模块(CommonJS、AMD、system、ES6),而不会过热(之前为RequireJS )
另外:
1)我们希望直接从typescript代码运行测试,而无需预编译和将JS存储在磁盘上
2)我们希望测试环境布局非常接近生产布局
3)我们建立了karma + jasmine + karma-typescript-preprocessor,运行良好。但是我们希望使用JSPM/SystemJS加载器,而在这种情况下,我们将确保我们的测试环境与使用SystemJS加载器的生产环境相匹配。因为另一只手,我们将需要编写一些仅用于测试的自定义引导程序。
但是我们在karma + jspm + typescript-plugin (jspm)上遇到了问题。
在JSPM './config.js‘中
System.config({
baseURL: "/",
"transpiler": false,
"packages": {
"src": {
"main": "test.ts",
"defaultExtension": "ts",
"meta": {
"*.ts": {
"loader": "ts"
},
"*.js": {
"loader": "ts"
}
}
}
},
paths: {
"npm:*": "jspm/npm/*",
"github:*": "jspm/github/*"
},
map: {
"ts": "github:frankwallis/plugin-typescript@2.2.3",
"typescript": "npm:typescript@1.6.2",
"github:frankwallis/plugin-typescript@2.2.3": {
"typescript": "npm:typescript@1.6.2"
}
}
});在Karma配置中:
// Karma configuration
// Generated on Mon Nov 30 2015 02:58:44 GMT+0500 (RTZ 4 (зима))
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jspm','jasmine'],
plugins:[
"karma-jspm",
'karma-jasmine',
'karma-chrome-launcher'
],
jspm: {
loadFiles: ['src/test.ts'], //we just try to check one simple test
packages: "jspm/"
} ,
proxies : { // avoid Karma's ./base virtual directory
'/src/': '/base/src/',
'/jspm/': '/base/jspm/'
},
reporters: ['progress'],
port: 9876,
browsers: ['Chrome']
})
}但有些地方出了问题:
30 11 2015 14:53:34.564:WARN [web-server]: 404: /jspm/github/frankwallis/pl
ugin-typescript@2.2.3
Chrome 46.0.2490 (Windows 10 0.0.0) ERROR: 'Potentially unhandled rejection [6]
Error: XHR error (404 Not Found) loading http://localhost:9876/jspm/github/frank
wallis/plugin-typescript@2.2.3
at error (http://localhost:9876/base/jspm/system.src.js?6536115be64e0ff966e0
5546f7767676fa7c03d6:1020:16)
at XMLHttpRequest.xhr.onreadystatechange (http://localhost:9876/base/jspm/sy
stem.src.js?6536115be64e0ff966e05546f7767676fa7c03d6:1028:13)'我们检查了url是否有效:因为Karma为ex /jspm/github/frankwallis/plugin-typescript@2.2.3\utils.js提供了良好的服务。我不明白为什么要尝试加载整个typescript插件目录。
所以我们有个问题:
1)是错误还是我们无法理解/config
2)如果这是我们的失败-如何修复它?
3)我们是否选择了不正确的方法来测试Karma + JSPM + Typescript?
任何建议都会有帮助。
发布于 2015-11-30 21:25:56
我自己发现了错误:"defaultJSExtensions": true,不在.\config.js中
发布于 2017-02-11 03:32:54
我使用了karma-uiuxengineering-jspm而不是karma-jspm。
它是一个fork,它当时似乎解决了我的问题,并且支持JSPM 0.17-beta。
该存储库还有一些用于angular2和typescript的种子项目(使用JSPM)以及测试环境。它真的帮助我建立了我的项目。
https://stackoverflow.com/questions/33996104
复制相似问题