You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Webpack配置env预设后IE仍报错:Object doesn't support property or method 'startsWith'

解决IE中startsWith不支持的问题

这个问题很常见——你用了@babel/preset-env转译代码,但它默认只处理语法层面的转译(比如箭头函数、let/const这些),不会自动polyfill ES6新增的内置对象方法,而startsWith正是ES6给String原型添加的方法,IE原生完全不支持它。

下面是具体的解决步骤:

1. 安装必要依赖

你需要添加core-js相关的polyfill工具,以及babel的runtime插件来避免全局污染:

# npm 命令
npm install --save-dev @babel/preset-env @babel/plugin-transform-runtime
npm install @babel/runtime-corejs3

# 或者 yarn 命令
yarn add --dev @babel/preset-env @babel/plugin-transform-runtime
yarn add @babel/runtime-corejs3

2. 修改Babel配置

更新你的.babelrc(或babel.config.json),添加useBuiltIns和corejs配置,同时引入runtime插件:

{
  "presets": [
    ["@babel/preset-env", {
      "targets": {
        "browsers": [">0.1%", "last 4 versions", "not ie <= 9"]
      },
      "useBuiltIns": "usage",
      "corejs": 3
    }]
  ],
  "plugins": [
    ["@babel/plugin-transform-runtime", {
      "corejs": 3
    }]
  ]
}

配置说明

  • useBuiltIns: 'usage':让Babel自动检测代码中用到的ES6+内置方法,按需引入对应的polyfill,不会一次性引入所有polyfill,减小打包体积。
  • corejs: 3:指定使用core-js的第3版本,它完整覆盖了ES6到ES2020的所有内置对象和方法的polyfill,包括startsWith。
  • @babel/plugin-transform-runtime:用模块化的方式引入polyfill,避免污染全局作用域,同时复用辅助代码,减少重复。

这样配置后,Webpack打包时会自动给IE添加startsWith的polyfill,错误就会消失了。

内容的提问来源于stack exchange,提问作者Витя Фролов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:50:48