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

React项目部署DreamHost后路由正常但JS报Unexpected token '<'错误求助

解决React Browser Router部署DreamHost后静态资源加载错误问题

问题根源

你遇到的Unexpected token '<'错误,本质是服务器把JS、JSON等静态资源请求重定向到了index.html,导致浏览器解析HTML内容当成JS,自然报错。这大概率是静态资源路径配置错误或者.htaccess规则没正确过滤真实存在的文件。

解决方案

1. 修正package.json的homepage配置

在项目根目录的package.json中添加或修改homepage字段:

  • 如果是部署在域名根目录(比如https://yourdomain.com/):
    "homepage": "/"
    
  • 如果是部署在子目录(比如https://yourdomain.com/your-app/):
    "homepage": "/your-app/"
    

修改后重新执行npm run build,再上传新的build文件夹到服务器。

2. 优化.htaccess规则

原规则可能存在识别真实文件的偏差,替换为更严谨的规则,确保只有不存在的路径才重定向到index.html:

Options -MultiViews
RewriteEngine On

# 排除静态资源文件,避免被重定向
RewriteCond %{REQUEST_URI} !\.(js|css|png|jpg|jpeg|gif|ico|svg|json|txt)$ [NC]
# 排除已经存在的文件或目录
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 重定向到index.html
RewriteRule ^ index.html [QSA,L]

把这个更新后的内容覆盖原.htaccess文件,确保文件放在build文件夹的根目录(和index.html同级)。

3. 验证静态资源路径

上传build文件夹后,检查服务器上的文件结构:

  • 确保static/js/、static/css/等目录完整存在
  • 访问某个JS文件的直接URL(比如https://yourdomain.com/static/js/main.xxx.chunk.js),确认返回的是JS代码而非HTML内容

额外注意事项

  • DreamHost的Apache服务器默认开启Rewrite模块,但如果上述规则无效,可联系主机商确认模块是否启用
  • 上传build文件夹时,确保所有文件(包括隐藏的.htaccess)都完整上传,部分FTP工具默认不显示隐藏文件,需开启显示选项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:25:20