我在同一 asp.net core 2.1应用中有一个 Angular&react应用(clientapp1和clientapp2)。我可以在文件夹 clientapp1 和 clientapp2 中运行这些应用。他们在自己的端口中运行并且运行良好。
我添加了以下代码来分支路径。我希望在使用端点http://localhost:5000/clientapp1
时运行有角度的应用程序,并在运行http://localhost:5000/clientapp2
时运行react应用程序。
app.Map("/clientapp1", clientapp1 =>
{
clientapp1.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp1";
if (env.IsDevelopment())
{
spa.UseAngularCliServer(npmScript: "start");
}
});
});
app.Map("/clientapp2", clientapp2 =>
{
clientapp2.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp2";
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
});
});
在应用程序根文件夹中运行命令dotnet run
时,asp.net核心应用程序不起作用。我收到以下错误。该错误表明它将在http://localhost:5000/文件夹中查找文件。
角度:
反应:
我必须设置什么配置才能告诉两个应用程序在哪里寻找文件。
如果将代码clientapp1.UseSpa(spa =>
更改为app.UseSpa(spa =>
,我可以使它工作。但是副作用是http://localhost:5000/clientapp2
不起作用。
答案 0 :(得分:0)
您必须具有两个脚本,并在脚本中添加--serve-path和--base-href。通常,您在package.json
中{
"name": "client-app",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start:app1": "ng serve --base-href=/clientapp1/ --serve-path=/clientapp1",
"start:app2": "ng serve --base-href=/clientapp2/ --serve-path=/clientapp2",
"build": "ng build",
...
},
....
}
在您的startup.cs中,例如
//for app1
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start:app1");
}
//for app2
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start:app2");
}