我使用gulp和babel将ES6转录成ES5。这是我的代码:
gulpfile.babel.js
import gulp from 'gulp';
import babel from 'gulp-babel';
gulp.src([appDir + 'js/**/*.js', '!' + appDir + 'js/{vendors,vendors/**}'])
.pipe(babel({
presets: ['es2015'],
plugins: ['transform-runtime']
}))
.pipe(gulp.dest(devDir + 'js'));
的package.json
"devDependencies": {
"babel-core": "*",
"babel-plugin-transform-runtime": "*",
"babel-preset-es2015": "*",
"gulp": "*",
"gulp-babel": "*",
}
.babelrc
{
"presets": [
"es2015"
],
"plugins": ["transform-runtime"]
}
除了IE11和Edge之外,所有浏览器都能正常工作。
IE11有错误:
'符号'未定义
Edge有错误:
对象不支持属性或方法'匹配'
我希望将此插件"plugins": ["transform-es2015-typeof-symbol"]
添加到.babelrc文件中将解决'符号'是未定义的问题但不是!
我是否遗漏了一些特殊设置或转换了babel的插件?
答案 0 :(得分:1)
由于您没有使用模块捆绑包,因此您需要从CDN加载https://cdnjs.com/libraries/babel-polyfill。我只是放弃
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.23.0/polyfill.min.js"></script>
在您的其他JS文件之前进入您的页面。
至于您关于matches
的错误,您必须通过查看代码来解决这个问题。使用Element#matches
的代码不适用于较旧的IE版本,因为该方法不存在或使用不同的名称。