// babel.config.js
presets: [['@babel/preset-env', {
useBuiltIns: 'usage', corejs: 3
}]]
babel 转译都开了,安卓 5 的机器打开还是白屏,控制台报 Promise is not defined。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,语法降级了但内置对象没补,core-js 没有按使用情况注入,老内核缺 Promise 这类 API。
围绕「core-js 按需引入」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。
一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
处理上按这个顺序:preset-env 打开 useBuiltIns 设为 usage;确认 corejs 版本和装的包一致;检查 targets 是否包含老机型。
改完只确认一件事:老机型上页面正常渲染,控制台不再报 Promise 未定义。
