Build React with Webpack Exception unexpected token

本文介绍了一种在React项目中遇到的JSX语法错误及其解决方案。主要问题是由于缺少必要的Babel插件导致无法将JSX转换为JavaScript。通过创建.babelrc配置文件并安装babel-plugin-transform-react-jsx插件来解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ERROR in ./app/main.js
Module build failed: SyntaxError: C:/Users/Yang/WebstormProjects/TestReact2/app/main.js: Unexpected token (6:13)

var React = require('react');
var AppComponent = require('./components/productBox.js');
React.render(<div><AppComponent/></div>, document.getElementById('content'))


This is because that babel can not tansform the react  jsx to js   

The revolution is :

1. ceate a file named .babelrc in project root

2. install npm install babel-plugin-transform-react-jsx

3. add code in .babelrc

{
  "plugins":["transform-react-jsx"]
}
### 关于 `SyntaxError: Unexpected token` 错误的原因及解决方案 #### 一、错误原因分析 当遇到 `SyntaxError: Unexpected token` 类型的错误时,通常意味着 JavaScript 解析器遇到了无法识别或不符合预期的语法结构。具体到不同场景下可能有多种成因: 对于使用 Vite 创建 React 应用并运行开发服务器过程中出现的 `UnhandledPromiseRejectionWarning: SyntaxError: Unexpected token '??='" 的情况[^1],这可能是由于 Node.js 版本过低不支持某些现代 ES 特性所致。 而在 Vue 项目中引入外部 JS 文件后发生的 `Uncaught SyntaxError: Unexpected token` 可能是因为所引入的脚本包含了浏览器当前环境尚不能理解的新特性或是 Babel 配置缺失导致未能正确转换 ES6+ 代码至兼容版本[^2][^3]。 #### 二、通用排查步骤与修复建议 针对上述提到的不同情形下的 `Unexpected token` 错误,可以采取如下措施尝试解决问题: - **更新依赖库和工具链** 确保所有使用的构建工具(如 Webpack, Rollup)、框架及其插件均为最新稳定版,并且 Node.js 和 npm/pnpm 等也处于较新状态以获得更好的特性和 bugfix 支持。 ```bash # 更新 pnpm 到最新版本 pnpm install -g pnpm@latest ``` - **调整目标环境设置** 如果是在旧版浏览器上测试应用,则需确认 .browserslistrc 或 package.json 中 browserslist 字段已适当设定最低限度的支持范围;同时检查 webpack.config.js (或其他打包配置文件) 是否启用了相应 polyfill 来填补潜在的功能缺口。 ```json // example of a valid browserslist configuration inside package.json { "browserslist": [ "> 0.5%", "last 2 versions", "not dead" ] } ``` - **启用/修正 Babel 转换规则** 为了使应用程序能够顺利执行含有高级 ECMAScript 构造的源码片段,应当安装必要的预设集以及自定义插件组合来完成从 ESNext 至 ES5 的降级工作。特别是当涉及到 JSX 语法糖或者提案阶段的语言扩展时更显重要。 ```javascript // 安装 babel 相关包 pnpm add @babel/core @babel/preset-env @babel/preset-react --save-dev ``` ```json // 修改 babel.config.json 添加 preset 设置 { "presets": ["@babel/preset-env", "@babel/preset-react"] } ``` - **验证第三方资源加载路径合法性** 仔细核对外部链接地址是否拼写无误,避免跨域资源共享(CORS)策略限制影响正常获取远程资产。另外还需留意 CDN 提供的服务质量及时效性等因素可能会间接引发此类异常现象的发生。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值