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

构建React应用后无法获取JSON配置文件的问题咨询

解决React构建后无法访问appsettings.json的问题

问题根源

React构建后的静态应用,若服务器配置了前端路由 fallback(所有请求指向index.html),会导致直接请求根目录下的appsettings.json时,服务器误将其当作路由请求转发到index.html,从而返回404。另外,部署路径不匹配也可能引发路径错误。


解决方法

1. 调整服务器静态文件路由规则

根据你使用的服务器,添加对应规则,优先返回存在的静态文件,再处理前端路由:

Nginx配置

在站点的location块中添加:

location / {
  # 先尝试返回请求的文件/目录,不存在再转发到index.html
  try_files $uri $uri/ /index.html;
}

# 单独配置json文件的缓存策略(方便后续修改生效)
location ~* \.json$ {
  expires -1;
  add_header Cache-Control "no-cache, no-store, must-revalidate";
}

Apache配置

在项目根目录的.htaccess文件中添加:

RewriteEngine On
RewriteBase /

# 跳过index.html本身
RewriteRule ^index\.html$ - [L]
# 若请求的不是存在的文件/目录,再转发到index.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]

IIS配置

在站点根目录的web.config中添加重写规则:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="React Routes" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <!-- 跳过已存在的文件和目录 -->
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/index.html" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

2. 修正fetch请求路径(若部署在子路径)

如果你的应用部署在域名的子路径下(比如https://xxx.com/my-app/),使用React内置的PUBLIC_URL变量确保路径正确:

const appsettingsResponse = await fetch(`${process.env.PUBLIC_URL}/appsettings.json`);
const appsettings = await appsettingsResponse.json();

PUBLIC_URL会自动匹配你通过package.json中homepage字段设置的部署路径,避免相对路径错误。

3. 确保配置修改后生效

修改appsettings.json后:

  • 若服务器配置了json文件不缓存(如上面Nginx的配置),只需重启站点服务器,用户刷新浏览器即可生效。
  • 若未配置缓存,需要强制用户刷新浏览器(Ctrl+F5),或者重启服务器后清除浏览器缓存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 18:18:24