对象不支持属性或方法匹配'边缘

时间:2017-08-04 17:17:45

标签: ecmascript-6 gulp internet-explorer-11 microsoft-edge babel

我使用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的插件?

1 个答案:

答案 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版本,因为该方法不存在或使用不同的名称。