Babel转换es6怎么支持ie8?

1、用babel转换es6在ie8下报错:在default处报缺少标识符 字符串或数字

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

2、我是用webpack配置的

test: /\.js/,
loader: "babel-loader",
query: {
    "presets": ["react", "es2015", "stage-1"],
    "plugins": [
        'transform-es3-member-expression-literals',
        'transform-es3-property-literals'
    ]
},
exclude: /node_modules/

3、但是没卵用,请问大家是怎么做的?

阅读 18.9k
5 个回答

我也遇到这个问题,发现没有好的解决办法,就写了这个简单的插件

babel-preset-es2015-loose

然而有大坑 真的要做ie8兼容 还是放弃es6吧

例子我上传到github上了,请点击这里看例子
解决方法:


module.exports = {
    entry: {
        polyfill: [
            'es5-shim',
            'es5-shim/es5-sham'
        ],
        app: [
            './example/index.js'
        ]
    },
    output: {
        path: path.join(__dirname, 'dist'),
        filename: '[name].js'
    },
    module: {
        loaders: [
            {
                test: /\.js$/,
                loader: 'babel',
                query: {
                    presets: ["es2015", "react"]
                },
                plugins: [
                    "transform-es3-property-literals",
                    "transform-es3-member-expression-literals",
                    "transform-es2015-modules-simple-commonjs"
                ]
            }
        ]
    },
    devServer: {
        hot: true,
        inline: true,
        contentBase: '/dist/'
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: './example/index.html'
        })
    ]
};

注:如果用webpack-dev-server在ie8中打开会报indexOf方法不支持,我看了下,这个好像是webpack-dev-server里的报错,但是打包后在ie8下就不会有问题的。还有,不要用export default xx,而是改为export {xxx}。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
推荐问题
宣传栏