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

部署在S3上的React应用出现Unexpected token <错误求助

解决Create React App + Serverless部署后因目录大小写修改导致的语法错误问题

你遇到的Uncaught SyntaxError: Unexpected token <错误,本质是浏览器尝试解析的不是JS文件,而是HTML内容(通常是404跳转回的index.html)。结合你修改了Icons/为icons/的操作,我帮你梳理几个核心原因和解决办法:

1. 构建产物的资源引用未更新

当你把目录名从大写Icons改成小写icons后,本地代码里的引用(比如import语句、img标签的src)可能还有残留的大写路径,导致CRA构建后的JS文件里依然指向旧的Icons路径。而S3里已经是小写的icons,请求旧路径会返回404;如果你的S3/Serverless配置了SPA的404重定向到index.html,浏览器就会把HTML当成JS来解析,自然出现<语法错误。

解决步骤:

  • 全局搜索代码库,确认所有引用Icons的地方都改成了icons(注意:Linux/S3是大小写敏感的,必须完全匹配)
  • 清空本地build目录,重新执行npm run build
  • 打开build/static/js目录下的文件,检查里面的资源路径是否都更新为小写的icons

2. 缺失的JS文件:缓存或部署遗漏

你提到报错里的main.977eb738.js在S3里找不到,大概率是这两种情况:

  • 缓存问题:浏览器或CDN缓存了旧的HTML文件,里面引用的还是旧哈希的JS文件,但新部署的S3里已经是新哈希的文件了。
    • 解决:强制刷新浏览器(Ctrl+Shift+R),如果用了CDN,手动清理CDN缓存
  • 部署遗漏:Serverless部署脚本没有把新构建的JS文件上传到S3。
    • 解决:检查Serverless配置文件(比如serverless.yml)里的静态资源上传规则,确认build目录下的所有文件都被包含;手动对比本地build目录和S3存储桶里的文件,确保main.xxx.js等文件都上传成功

3. S3的大小写敏感性验证

虽然你已经确认S3里是小写icons,但还是要额外注意:

  • 部署时有没有上传旧的Icons目录残留(S3会保留大小写不同的独立目录)
  • 确保代码里的所有资源路径和S3里的目录完全匹配(全小写,没有拼写错误)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:29:48