swa*_*ang 6 javascript babel phantomjs ecmascript-6 karma-runner
我正在使用gulp-babel将我的es6代码翻译成es5
gulp.task('build_all_debug', ['config', 'compile'], function() {
var stream = gulp.src(['public/js/config.js', 'public/js/*.js', 'public/compiled/*.js'])
.pipe(babel({
presets: ['es2015']
}))
.pipe(concat('app.js'))
.pipe(gulp.dest('public/dist'));
return stream;
});
Run Code Online (Sandbox Code Playgroud)
虽然它大部分工作正常,但它实际上并没有翻译Map和Set.我的结果js代码仍然包含它们,当我用karma/mocha/phantomJs运行单元测试时,我得到以下错误:
PhantomJS 2.1.1 (Mac OS X 0.0.0) notes.controller "before each" hook: workFn for "loads notes from the service" FAILED
Can't find variable: Map
activate@public/dist/app.js:2402:39
Run Code Online (Sandbox Code Playgroud)
有没有办法强迫babel将Map和Set转换为es5中的对象和数组?
您必须包含babel-polyfill在您的代码中.
你必须用npm安装它:
npm install babel-polyfill
Run Code Online (Sandbox Code Playgroud)
然后,如果您使用的是ES6模块:
import 'babel-polyfill';
Run Code Online (Sandbox Code Playgroud)
要么:
require('babel-polyfill');
Run Code Online (Sandbox Code Playgroud)
如果要在浏览器中运行代码,可以从cdnjs加载:
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.16.0/polyfill.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3042 次 |
| 最近记录: |