我正在尝试使用具有最新 SpaServices 扩展的 ASP.NET Core 3.1 运行多个 React SPA 应用程序,并且在提供静态资产时遇到问题。我构建的大部分内容都来自一个类似的问题:如何为 SpaServices 托管的多个 SPA 配置 ASP.net Core 服务器路由,但这与 Angular 和旧版本的 SpaServices 有关。
我的代码有两个 React 应用程序,ClientApp
并且AdminApp
我使用以下启动代码对每个应用程序进行了配置:
app.Map("/client", clientApp =>
{
clientApp.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
});
});
app.Map("/admin", adminApp =>
{
adminApp.UseSpa(spa =>
{
spa.Options.SourcePath = "AdminApp";
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
});
});
转到/client
and/admin
路由会提供正确的 React文件,但不会加载index.html
链接的捆绑文件。以下是SPA.js
的最终索引 HTML 示例:ClientApp
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<base href="/client" />
<title>Client App</title>
</head>
<body>
<h1>Client App</h1>
<div id="root"></div>
<script src="/static/js/bundle.js"></script>
<script src="/static/js/0.chunk.js"></script>
<script src="/static/js/main.chunk.js"></script>
</body>
</html>
问题是链接是相对于站点的根目录的,/static/js/bundle.js
并且需要相对于 React 应用程序的路径。示例文件路径应分别为/client/static/js/bundle.js
和/admin/static/js/bundle.js
。
如何让将路径写入 index.html 文件的系统为静态文件使用正确的根路径?谢谢。