我是node.js
stack likenpm
等的新手gulp
。我之前写了一些 JavaScript 单元测试用例,现在想Karma
用作测试运行程序。但是,经过几次尝试,我现在完全迷失了。
首先,我有以下项目配置:
SystemJS
作为模块加载器。文件夹结构(为简洁起见省略了一些):
project | |--build //contains all gulp tasks | |--dist //contains the output (*.html, *.js etc.) | |--jspm_packages | |--node_modules | |--src //contains the source .html, and *.ts | |--tests //contains unit tests in *.ts. I also have a gulp task to build tests/**/*.ts to *.js in the same folder. | |--typings //contains type definitions | |--config.js //contains SystemJS configuration | |--karma.conf.js
karma.conf.js
// Karma configuration module.exports = function (config) { config.set({ basePath: '', frameworks: [ 'qunit'], files: [ 'jspm_packages/system.js', //'config.js', 'dist/custom/*.js' //, //'tests/**/*.js' ], exclude: [ ], preprocessors: { }, reporters: ['progress'], port: 9876, colors: true, logLevel: config.LOG_INFO, autoWatch: true, browsers: ['Chrome'], singleRun: false, concurrency: Infinity }); }
但是,每当我这样做时karma start
,我都会出错Uncaught TypeError: Unexpected anonymous System.register call.
。有没有办法解决这个问题?
其他尝试:
- 根据https://github.com/karma-runner/gulp-karma尝试创建一个 gulp 任务。但是有同样的问题。
尝试使用
karma-systemjs
. 不同之karma.conf.js
处如下:// Karma configuration module.exports = function (config) { config.set({ ... frameworks: [ 'systemjs', 'qunit'], plugins: ['karma-systemjs', 'karma-chrome-launcher', 'karma-firefox-launcher'], systemjs: { configFile: 'config.js', serveFiles: ['jspm_packages/**/*.js'], config: { transpiler: 'babel' } }, ... }); }
在这种情况下,我得到了以下错误,尽管我已经安装了
SystemJs
两者Babel
:[WARNING] Looking up paths with require.resolve() is deprecated. Please add "systemjs" to your SystemJS config paths. Cannot find "systemjs". Did you forget to install it ? npm install systemjs --save-dev [WARNING] Looking up paths with require.resolve() is deprecated. Please add "babel" to your SystemJS config paths. Cannot find "babel-core". Did you forget to install it ? npm install babel-core --save-dev
在这方面的任何帮助都会很棒。