You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在模块中导入JSX文件,解决Uncaught SyntaxError: Unexpected token '<'报错

解决方案

报错原因

你仅给入口文件index.js配置了type="text/babel"让Babel转译JSX语法,通过import导入的test.js会被浏览器默认当作普通ES模块解析,不会经过Babel转译,碰到JSX的<语法就会抛出语法错误。

具体修改步骤

1. 调整index.html配置

首先补全缺失的依赖(React、ReactDOM、jQuery),再添加Babel全局配置,开启模块转译能力:

<!-- 先引入项目依赖 -->
<script crossorigin src="https://unpkg.com/react@17/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

<!-- 提前配置Babel全局参数 -->
<script>
window.Babel = {
  presets: ['react', 'es2020'],
  standalone: {
    // 开启对导入模块的转译处理
    transformModules: true
  }
}
</script>

<!-- 引入babel standalone -->
<script src="https://unpkg.com/@babel/standalone@7.15.8/babel.min.js" crossorigin></script>

<div id="app"></div>
<script src="index.js" type="text/babel" data-type="module"></script>

2. 修改index.js的导入路径

把import语句改为相对路径,避免浏览器路径解析异常:

// 改成相对路径./test.js
import {SheetWaypointList} from './test.js';

// 原有其他代码保持不变
class App extends React.Component{
  constructor(props) {
    super(props);
  };
  render() {
    return <div>content 1</div>;
  };
};
$(document).ready(function () {
  ReactDOM.render(
    <App/>,
    document.getElementById('app')
  );
});

3. test.js代码无需修改

调整后导入的test.js会自动被Babel转译JSX语法,不会再抛出<相关的语法错误。

注意事项

这种纯浏览器端Babel转译的方式仅适合本地调试、原型开发使用,生产环境还是建议用Vite、Create React App等构建工具打包后部署,性能会好很多。

内容的提问来源于stack exchange,提问作者user2573099

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:45:04