我已经用 ES6 编写了我的 React 应用程序。现在我也想用 ES6 编写我的测试。所以这里的挑战是配置业力。
与谷歌一起,我用 karma.config.js 走了这么远(我省略了配置文件中相同的部分!):
...
files: [
'../node_modules/karma-babel-preprocessor/node_modules/babel-core/browser-polyfill.js',
'../app/**/*.jsx',
'../test/**/*.jsx'],
preprocessors: {
'app/**/*.jsx': ['react-jsx', 'babel'],
'test/**/*.jsx': ['react-jsx', 'babel']
},
'babelPreprocessor': {
options: {
sourceMap: 'inline'
},
filename: function(file) {
return file.originalPath.replace(/\.jsx$/, '.es5.js');
},
sourceFileName: function(file) {
return file.originalPath;
}
},
....
我认为这个设置应该做什么:1)将 JSX 编译为 JS,接下来babel
应该将 ES6 转换为 ES5。例如,这与polyfill
我期望它应该在 phantomjs 中运行一起。但是不,这是我运行它时 karma 的输出:
PhantomJS 1.9.8 (Mac OS X) ERROR
SyntaxError: Parse error
at Projects/ES6/app/js/app.jsx:35
PhantomJS 1.9.8 (Mac OS X): Executed 0 of 0 ERROR (0.027 secs / 0 secs)
[20:36:59] Karma has exited with 1
第 35 行app.jsx
包含实际的 JSX 部分。所以,由于某种原因,预处理器似乎没有那么多。预处理器的任何帮助将不胜感激?
更新:我有这个几乎可以工作的酒。原来我拥有的预处理器应该像这样交换
'../app/**/*.jsx': ['babel', 'react'],
'../test/**/*.jsx': ['babel', 'react']
现在,当我运行它时,我得到:
Uncaught ReferenceError: require is not defined
我以为我有一个 polyfill :(