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

Create React App生产环境JS/CSS资源加载失败求助

解决Create React App部署到子目录后资源加载失败的问题

这是CRA部署到非根路径时的典型问题,别慌,按下面几步就能搞定:

1. 配置package.json里的homepage字段

首先打开项目根目录的package.json,添加homepage字段,值要和你的生产环境子路径完全匹配:

{
  "name": "your-app-name",
  "homepage": "/tools/forecaster",
  // 其他原有配置...
}

这个配置会告诉CRA在打包时,给所有静态资源(JS、CSS、图片等)加上/tools/forecaster的路径前缀,这样生产环境下浏览器就能正确找到这些资源了。

2. 给路由添加basename属性

你用的是react-router-dom的BrowserRouter,需要给它加上basename属性,对应你的子路径:

// routes.js
import React from 'react'
import { BrowserRouter as Router, Route } from 'react-router-dom';
import login from './components/login';

const myTool = () => {
  // 你的组件逻辑
};

function AppRoutes() {
  return (
    <Router basename="/tools/forecaster"> {/* 新增basename配置 */}
      <Route path="/login" component={login} />
      <Route path="/" component={myTool} />
      // 其他路由规则...
    </Router>
  );
}

export default AppRoutes;

这个设置能确保所有路由跳转都基于/tools/forecaster前缀,避免路由跳转后出现404。

3. 重新打包并部署

修改完配置后,重新执行打包命令:

npm run build

把生成的build目录下的所有文件,部署到生产环境对应位置即可。

问题根源解释

本地开发时,虽然URL是http://localhost:8081/tools/forecaster,但CRA的开发服务器默认把资源放在根路径下,能自动适配子路径访问;但生产环境中你的应用部署在stg.abc.com的/tools/forecaster子目录里,如果不配置homepage,打包后的资源路径会是/static/js/main.xxx.js,浏览器会去https://stg.abc.com/static/js/...找资源,自然就找不到了。

内容的提问来源于stack exchange,提问作者Atul kumar singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:47:15