Babel 转译 React JSX 时报错 Unexpected token,怎么回事? Dev · 玉杰 提问于 2026-03-20 11:29:23 阅读 14 工具 我刚搭了个新项目,用 Babel 处理 React 代码,但一跑构建就报“Unexpected token”错误,指向 JSX 的尖括号。明明装了 @babel/preset-react,也配进去了,咋还不行? 这是我的 .babelrc 配置和一段简单组件: { "presets": ["@babel/preset-react"] } 组件代码如下: const App = () => { return <div>Hello World</div>; }; Babel 我来解答 赞 2 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 Mc.鉴恒 Lv1 这个问题挺常见的,基本就那么几个原因: 最可能的情况是你只配了 @babel/preset-react,但忘了配 @babel/preset-env。Babel 7+ 需要这两个配合着用,preset-react 负责转 JSX,preset-env 负责处理其他 JS 语法。 改成这样试试: { "presets": [ "@babel/preset-env", "@babel/preset-react" ] } 如果你是用 webpack 打包,记得检查 babel-loader 的配置,确保 exclude 排除了 node_modules,别把第三方库也转译了。 还有一种可能是依赖没装对,确保装的是 Babel 7 的包(@babel/preset-xxx),别用旧版 babel-preset-react。现在新项目直接用 Vite 或者 Create React App 得了,省心很多,这些脚手架都配好了,不会踩这种坑。 回复 点赞 2026-03-20 12:00 加载更多 相关推荐 2 回答 30 浏览 配置了@babel/preset-react为什么还是报JSX语法错误? 刚在React项目里用Babel转译JSX,虽然装了@babel/preset-react,但编译时还是报Unexpected token错误。我的.babelrc配置是这样的: { "presets... 令狐瑞芳 工具 2026-02-07 13:11:37 2 回答 19 浏览 SWC 编译 React 时为啥不识别 JSX 语法? 我用 SWC 替换 Babel 做构建,但一写 JSX 就报错,说 Unexpected token。明明装了 @swc/core 和 @swc/cli,也配了 .swcrc,但还是不行。 这是我的组... 司徒光磊 前端 2026-03-05 14:54:23 2 回答 80 浏览 为什么配置了Babel的@babel/preset-react后JSX还是无法转换? 我在React项目里用Babel处理JSX,已经安装了@babel/preset-react并配置到.babelrc里了,但打包后浏览器还是报错"Uncaught SyntaxError: Unexp... FSD-倩云 工具 2026-02-05 06:23:27 2 回答 58 浏览 自定义Webpack Loader处理React JSX时语法错误怎么办? 我在写一个自定义Webpack Loader来处理React组件的JSX代码,但总是报"Unexpected token (2:8)"错误。尝试用babylon解析时发现,Loader返回的代码字符串... 西门卓尚 前端 2026-02-01 21:37:26 1 回答 8 浏览 HappyPack 配合 Babel 编译 React 项目时报错怎么办? 我用 HappyPack 来加速 Webpack 的 Babel 编译,但一加上就报错,说 JSX 语法不识别。明明没加 HappyPack 时能正常跑,是不是配置哪里有问题? 这是我的组件代码: i... Good“晓芳 前端 2026-03-18 20:58:20 2 回答 26 浏览 Babel插件怎么处理JSX中的自定义组件标签? 我写了个Babel插件想把所有自定义组件(首字母大写的JSX标签)替换成函数调用,但插件好像没生效。我试过匹配JSXOpeningElement节点,判断name.name[0]是不是大写,但调试发现... 继芳🍀 工具 2026-02-25 19:46:21 2 回答 94 浏览 React表单提交时Anti-CSRF Token没变化导致重复提交被拦截怎么办? 我在用React做文件上传功能时,按照教程实现了CSRF防护,但发现同一个页面多次提交时token没变,导致第二次提交被服务器拦截了。明明在组件挂载时生成了token,代码是这样的: class Fi... 设计师景岩 安全 2026-01-31 16:56:29 2 回答 94 浏览 为什么用Vite导入JSON文件时报“Unexpected token”错误? 在Vue组件里用import引入本地JSON文件时突然报错,提示“Unexpected token {”。之前正常运行过,今天改了数据结构就崩了…… 代码是这样的:<script setup&g... 司马瑞玲 工具 2026-01-26 14:44:31 1 回答 24 浏览 ESLint 插件为啥不识别 React 的 JSX 语法? 我装了 eslint-plugin-react,也配了 plugin 和 extends,但写 JSX 还是报错,说 Unexpected token '<',这到底咋回事? 我的组件... 克样 Dev 工具 2026-03-07 19:58:21 2 回答 48 浏览 Babel插件遍历React组件时如何修改props默认值? 我在用Babel插件处理React组件时遇到问题,想通过AST修改组件默认props,但总报错。比如这个组件: class MyComponent extends React.Component { ... 端木焕焕 工具 2026-02-05 14:44:34
最可能的情况是你只配了 @babel/preset-react,但忘了配 @babel/preset-env。Babel 7+ 需要这两个配合着用,preset-react 负责转 JSX,preset-env 负责处理其他 JS 语法。
改成这样试试:
如果你是用 webpack 打包,记得检查 babel-loader 的配置,确保 exclude 排除了 node_modules,别把第三方库也转译了。
还有一种可能是依赖没装对,确保装的是 Babel 7 的包(@babel/preset-xxx),别用旧版 babel-preset-react。现在新项目直接用 Vite 或者 Create React App 得了,省心很多,这些脚手架都配好了,不会踩这种坑。