React 浏览器兼容性低至 ie11

React browser compatibility down to ie11

编译 React with parcel 以兼容浏览器 Chrome、Firefox、Safari、Edge 和 IE (10/11)

曾尝试将 babel 与 core-js 一起使用,但每次在 IE 10 和 11 上加载时都会出现语法错误。已在 .babelrc @babel/preset-react 和 @babel/preset-env 中使用。 React 配置设置为向下编译为 dom 而不是 React.createElement,env 设置为目标 ie10,useBuiltins 设置为导入 core-js 的入口。

"build:site": "parcel build site/site.tsx --out-dir public",

早在 3 月份,就发布了一个安全更新,在我工作过的所有 React 站点上全面解决了这个问题。其他站点使用了同样失败的 webpack

错误信息:

SCRIPT1002: Syntax error
File: site.js, Line: 1685, Column: 32
module.exports=(e=>encodeURIComponent(e).replace(/[!'()*]/g,e=>"%".concat(e.charCodeAt(0).toString(16).toUpperCase())));

可重现代码: 我还无法从新应用重现错误

默认情况下,Parcel 不会转译节点模块,但当需要部分库时它们仍然会被捆绑。通过切换到 webpack v4 并且不排除 node_modules 目录,捆绑代码以及库代码将被转译。此方法确实需要 import 'core-js' 并使用 babel-loader。举个简单的例子:

module.exports = {
  entry: './app.js',
  modules: {
    rules: [
      {
        test: /\.m?js$/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env']
          }
        }
      }
    ]
  },
  resolve: {
    extensions: [
      '.js',
      '.jsx'
    ]
  }
  output: {
    filename: 'app.js',
    path: './public'
  }
};