如何用 Babel 将最新的 JS 特性转译为旧版浏览器兼容代码

Babel 7+ 配置必须用 exports.default;targets 需明确指定浏览器版本;React 17+ 需 preset-react 启用 automatic runtime;避免 loose 全局启用和插件重复;现代 node_modules 包需显式转译。babel.config.js 配置必须用 exports.default 而不是 module.exports很多人在 babel.config.js 里写 module.exports = { presets: ... },结果 Babel 完全不生效------尤其在 monorepo 或使用 @babel/cli 时。Babel 7+ 默认只认 exports.default,这是它读取配置的约定,不是可选项。实操建议:始终用 module.exports = { presets: ... } 是错的;正确写法是 exports.default = { presets: ... }如果项目用了 TypeScript,别在 babel.config.js 里 import 类型,Babel 不执行 TS 编译;类型注解会直接报错 SyntaxError: Unexpected token 'export'配置里加 sourceType: 'unambiguous' 可避免 ES 模块识别失败,尤其处理无 import/export 但含 async/await 的文件时@babel/preset-env 的 targets 必须明确指定浏览器范围只写 { "presets": "@babel/preset-env" },Babel 默认按 targets: { node: "current" } 处理,结果代码完全没降级,Chrome 90+ 的特性原样输出,IE11 或 Safari 12 直接报错 SyntaxError: Invalid regular expression flag 'd'(因为 /d 标志未被转译)。实操建议:用 targets: { chrome: "58", safari: "12", ie: "11" } 这类具体版本,而不是 "last 2 versions"(后者对旧版浏览器覆盖不可靠)配合 core-js 时,useBuiltIns: "usage" 必须搭配 corejs: 3,否则 Array.from 等新 API 不注入 polyfill若用 Webpack,确保 babel-loader 的 exclude 没误排除 node_modules 中需转译的依赖(比如某些现代 UI 库)JSX 和 React 用户必须配 @babel/preset-react,且注意 runtime 区别React 17+ 默认启用新的 JSX 转换,但 Babel 不自动适配:没配 @babel/preset-react 时,<div></div> 会变成 React.createElement("div"),而新 runtime 要求 jsx 函数调用;结果运行时报错 ReferenceError: jsx is not defined。 稿定AI 拥有线稿上色优化、图片重绘、人物姿势检测、涂鸦完善等功能

相关推荐
Decay__2 小时前
VMware 安装 SQL Server 双节点 AlwaysOn 可用性组教程 —— WSFC、AG 与侦听器完整部署(系列核心篇)
运维·数据库·sql·mysql·架构
databook2 小时前
时间序列数据,先拆规律还是先查异常
python·数据挖掘·数据分析
茶栀(*´I`*)3 小时前
SQL 性能分析:从慢查询日志到执行计划的完整定位方法
数据库·sql
师夷长技以自愈3 小时前
手搓 AI Agent 第 8 篇:从手写循环到画流程图——LangGraph 封装
人工智能·python
艺杯羹3 小时前
1Panel 装好后 ufw 仍是 inactive:一次服务器安全盲区复盘
服务器·数据库·安全·网络安全·系统架构·实战·1panel
jyOverQ3 小时前
从零学 JVM(六):垃圾回收算法详解——标记清除、标记复制与标记整理
jvm·算法
aifannihao4 小时前
Rust 1.100 的 DropGuard:用 Python 实测失败回滚与吞异常
python·rust·异常处理·标准库·contextlib
code2cat4 小时前
【随笔】MCP工具重试:任务已经创建,响应丢了怎么办
数据库·mcp
用户019027581616 小时前
天勤 tqsdk 能做 A 股行情吗?期货强项与股票数据选型
python
wuyk5556 小时前
Spider-第10讲-SQLite持久化与去重
数据库·爬虫·sqlite