Webpack从v4升级到v5后我的React应用无法在IE11运行如何解决
webpack5升级后IE11兼容问题解决步骤
- 调整babel-loader编译范围
第三方依赖包自带的ES6+语法默认不会被babel转译是最常见的诱因,你需要修改webpack配置中module.rules下babel-loader的exclude规则,取消全局排除node_modules目录,仅排除无需兼容的特定依赖,示例配置如下:
你可以打开IE11的控制台查看报错对应的代码段,定位到对应的依赖包名后填入上述正则中即可。{ test: /\.(js|jsx)$/, exclude: /node_modules\/(?!(需要转译的依赖包名1|需要转译的依赖包名2)\/*)/, use: 'babel-loader' } - 补充
@babel/plugin-transform-runtime配置
你当前的babel配置未给该插件指定corejs参数,会导致部分垫片无法正确注入,修改插件配置为:["@babel/plugin-transform-runtime", { "corejs": 3 }] - 补充webpack output环境限制配置
webpack5默认会生成包含ES6特性的chunk包裹代码,仅设置target字段可能不生效,需要手动添加output.environment配置强制禁用所有IE11不支持的语法特性:output: { // 保留你的原有output配置,新增以下内容 environment: { arrowFunction: false, bigIntLiteral: false, const: false, destructuring: false, dynamicImport: false, forOf: false, module: false, optionalChaining: false, templateLiteral: false } } - 确认polyfill引入顺序
请确认import 'react-app-polyfill/ie11'; import 'react-app-polyfill/stable';两行代码是入口文件src/index.js的最顶部代码,没有其他import语句排在它前面,避免代码在polyfill加载完成前执行导致报错。 - 校验.browserslistrc配置
请确认配置文件中明确包含IE 11规则,若你区分了开发、生产环境配置,需保证两套配置都包含IE11兼容规则,没有被覆盖。
内容的提问来源于stack exchange,提问作者Vladut
相关产品推荐
相关产品推荐

