在HTML中链接外部文件夹JS文件报错:Uncaught SyntaxError问题
解决Create React App中直接引用src目录JS文件的语法错误
这个错误的核心问题是你在public目录的index.html里直接引用了src目录下的JavaScript文件,而Create React App(CRA)的项目结构中,src目录里的文件是需要经过Webpack编译打包的,浏览器无法直接访问这个目录下的原始文件。当你用../src/pages/testing.js这个路径请求时,服务器实际返回的不是你的JS代码,而是一份HTML文件(通常是index.html),所以浏览器解析时会把HTML的开头<当成JS语法,抛出Unexpected token '<'错误。
下面是几种可行的解决方法:
方法1:将JS文件移至public目录(适合独立脚本)
如果你的testing.js不需要和React代码交互,只是独立的脚本逻辑,可以把它放到public目录下(比如新建public/scripts子文件夹),然后在index.html里通过%PUBLIC_URL%变量引用:
<script src="%PUBLIC_URL%/scripts/testing.js"></script>
%PUBLIC_URL%是CRA内置的变量,会自动指向public目录的正确路径,避免相对路径出错。
方法2:在React组件中导入(推荐,适合和React交互的场景)
如果你的JS代码需要和React应用联动,符合CRA开发流程的方式是直接在React组件里导入:
- 在src目录的任意组件(比如
App.js)中添加导入语句:
import './pages/testing.js';
- Webpack会自动将这段代码打包进最终的项目bundle里,无需手动在HTML中添加script标签。
方法3:自定义Webpack配置(不推荐,适合复杂自定义需求)
如果必须保留src目录下的文件并单独引用,需要通过eject命令暴露CRA的Webpack配置,或者使用react-app-rewired工具修改配置,将src/pages目录设置为静态资源目录。但这种方式会增加项目维护成本,不推荐新手使用。
内容的提问来源于stack exchange,提问作者Therone Almadin
相关产品推荐
相关产品推荐

