【发布时间】:2015-12-22 18:13:30
【问题描述】:
我正在尝试使用带有 Angular 2 和 typescript 的 karma/jasmine/systemjs 运行测试。我之前使用 babel 让它在没有 systemjs/typescript 的情况下工作。
我还可以将 typescript 转换为 es6 并使用相同的业力设置而不使用 systemjs。
我想使用 systemjs,并且我不想进行两次转译,所以现在我正在尝试将 systemjs 与 karma 一起使用。 (使用 karma-system.js)。
我得到的错误是:
Error: XHR error (404 Not Found) loading /path/to/project/angular2/core.js
无论出于何种原因,karma/systemjs 都没有在 node_modules 目录中查找 angular,我不想将其硬编码到我的项目文件中。
karma.conf.js:
module.exports = function(config) {
config.set({
basePath: '',
plugins: ['karma-systemjs', 'karma-jasmine', 'karma-chrome-launcher'],
frameworks: ['systemjs', 'jasmine'],
files: [
'client/**/*.spec.js',
'client/**/**/*.spec.js',
'server/**/*.spec.js',
'server/**/**/*.spec.js'
],
exclude: [
'node_modules/',
'client/node_modules/*',
'client/node_modules/**/*.spec.js',
'server/node_modules/*'
],
preprocessors: {},
systemjs: {
configFile: 'system.conf.js',
serveFiles: [
'client/**/*.js',
'server/**/*.js',
],
config: {
defaultJSExtensions: true
}
},
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_DEBUG,
autoWatch: false,
browsers: ['Chrome'],
singleRun: false,
concurrency: Infinity
})
}
system.conf.js
System.config({
paths: {
'systemjs': 'node_modules/systemjs/dist/system.js',
'system-polyfills': 'node_modules/systemjs/dist/system-polyfills.js',
'es6-module-loader': 'node_modules/es6-module-loader/dist/es6-module-loader.js'
}
});
在我的打字稿文件中,我正在像这样加载角核心。
import { Component, View } from 'angular2/core';
它被转译为:
System.register(['angular2/core'], function(exports_1) {
我尝试将 baseUrl 添加到我的 systemjs 配置中,但它似乎没有做任何事情。
我已经“谷歌搜索”和搜索堆栈几个小时了。我查看了How to configure karma and systemjs to run tests for angular ES6 transpiled by traceur into amd format ES5 modules 和Angular and ES6: Karma Testing with SystemJS 仍然没有解决问题。
【问题讨论】:
标签: javascript angularjs karma-jasmine systemjs typescript1.5