Babel 转译 React JSX 时报错 Unexpected token,怎么回事? Dev · 玉杰 提问于 2026-03-20 11:29:23 阅读 87 工具 我刚搭了个新项目,用 Babel 处理 React 代码,但一跑构建就报“Unexpected token”错误,指向 JSX 的尖括号。明明装了 @babel/preset-react,也配进去了,咋还不行? 这是我的 .babelrc 配置和一段简单组件: { "presets": ["@babel/preset-react"] } 组件代码如下: const App = () => { return <div>Hello World</div>; }; Babel 我来解答 赞 5 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 2 条解答 程序员芸菡 Lv1 这个错误通常是因为 Babel 没有正确配置或者缺失必要的插件。你已经安装了 @babel/preset-react,这没错,但还需要确保你使用的是最新的 Babel 版本,并且在项目的 package.json 中正确配置了 Babel 的依赖。 首先,检查下你的 package.json 文件,确保你安装了这些依赖: "devDependencies": { "@babel/core": "^最新版本", "@babel/preset-env": "^最新版本", "@babel/preset-react": "^最新版本", "babel-loader": "^最新版本" } 然后,确认你的 .babelrc 配置文件看起来没问题,不过为了保险起见,可以试试改成这种格式,有时候 JSON 格式更可靠: { "presets": ["@babel/preset-env", "@babel/preset-react"] } 别忘了在 webpack 配置或者其他打包工具中设置 babel-loader 来处理 JavaScript 和 JSX 文件。确保你有类似这样的规则: module: { rules: [ { test: /.(js|jsx)$/, exclude: /node_modules/, use: { loader: "babel-loader" } } ] } 最后,记得清理一下 node_modules 文件夹,然后重新安装依赖: rm -rf node_modules && npm install 有时候缓存和旧的依赖会搞事,这样能确保所有东西都是最新的。希望这些步骤能帮到你,如果还有问题,可能是其他地方出了小问题,再检查一遍配置吧。 回复 点赞 2026-03-24 05:00 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 回答 49 浏览 配置了@babel/preset-react为什么还是报JSX语法错误? 刚在React项目里用Babel转译JSX,虽然装了@babel/preset-react,但编译时还是报Unexpected token错误。我的.babelrc配置是这样的: { "presets... 令狐瑞芳 工具 2026-02-07 13:11:37 2 回答 48 浏览 SWC 编译 React 时为啥不识别 JSX 语法? 我用 SWC 替换 Babel 做构建,但一写 JSX 就报错,说 Unexpected token。明明装了 @swc/core 和 @swc/cli,也配了 .swcrc,但还是不行。 这是我的组... 司徒光磊 前端 2026-03-05 14:54:23 2 回答 125 浏览 为什么配置了Babel的@babel/preset-react后JSX还是无法转换? 我在React项目里用Babel处理JSX,已经安装了@babel/preset-react并配置到.babelrc里了,但打包后浏览器还是报错"Uncaught SyntaxError: Unexp... FSD-倩云 工具 2026-02-05 06:23:27 2 回答 104 浏览 自定义Webpack Loader处理React JSX时语法错误怎么办? 我在写一个自定义Webpack Loader来处理React组件的JSX代码,但总是报"Unexpected token (2:8)"错误。尝试用babylon解析时发现,Loader返回的代码字符串... 西门卓尚 前端 2026-02-01 21:37:26 1 回答 62 浏览 HappyPack 配合 Babel 编译 React 项目时报错怎么办? 我用 HappyPack 来加速 Webpack 的 Babel 编译,但一加上就报错,说 JSX 语法不识别。明明没加 HappyPack 时能正常跑,是不是配置哪里有问题? 这是我的组件代码: i... Good“晓芳 前端 2026-03-18 20:58:20 2 回答 53 浏览 Babel插件怎么处理JSX中的自定义组件标签? 我写了个Babel插件想把所有自定义组件(首字母大写的JSX标签)替换成函数调用,但插件好像没生效。我试过匹配JSXOpeningElement节点,判断name.name[0]是不是大写,但调试发现... 继芳🍀 工具 2026-02-25 19:46:21 2 回答 130 浏览 React表单提交时Anti-CSRF Token没变化导致重复提交被拦截怎么办? 我在用React做文件上传功能时,按照教程实现了CSRF防护,但发现同一个页面多次提交时token没变,导致第二次提交被服务器拦截了。明明在组件挂载时生成了token,代码是这样的: class Fi... 设计师景岩 安全 2026-01-31 16:56:29 2 回答 120 浏览 为什么用Vite导入JSON文件时报“Unexpected token”错误? 在Vue组件里用import引入本地JSON文件时突然报错,提示“Unexpected token {”。之前正常运行过,今天改了数据结构就崩了…… 代码是这样的:<script setup&g... 司马瑞玲 工具 2026-01-26 14:44:31 1 回答 51 浏览 DAST扫描报React应用有XSS漏洞,但我用了JSX不是自动转义了吗? 我们最近用OWASP ZAP做DAST安全扫描,结果报了一个反射型XSS漏洞。可我明明在React里直接用JSX渲染用户输入,按理说React会自动转义啊,怎么还会被扫出来? 比如下面这段代码,只是把... 欧阳东宁 安全 2026-03-30 21:17:16 1 回答 46 浏览 ESLint 插件为啥不识别 React 的 JSX 语法? 我装了 eslint-plugin-react,也配了 plugin 和 extends,但写 JSX 还是报错,说 Unexpected token '<',这到底咋回事? 我的组件... 克样 Dev 工具 2026-03-07 19:58:21
首先,检查下你的 package.json 文件,确保你安装了这些依赖:
然后,确认你的 .babelrc 配置文件看起来没问题,不过为了保险起见,可以试试改成这种格式,有时候 JSON 格式更可靠:
别忘了在 webpack 配置或者其他打包工具中设置 babel-loader 来处理 JavaScript 和 JSX 文件。确保你有类似这样的规则:
最后,记得清理一下 node_modules 文件夹,然后重新安装依赖:
rm -rf node_modules && npm install有时候缓存和旧的依赖会搞事,这样能确保所有东西都是最新的。希望这些步骤能帮到你,如果还有问题,可能是其他地方出了小问题,再检查一遍配置吧。
最可能的情况是你只配了 @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 得了,省心很多,这些脚手架都配好了,不会踩这种坑。