2

我在同一个asp.net core 2.1 app中有一个angular & react 应用程序(clientapp1 和 clientapp2)。我可以在它的文件夹clientapp1clientapp2中运行应用程序。他们在自己的端口中运行并且工作正常。

我添加了以下代码来分支路径。我希望 angular 应用程序在我使用端点http://localhost:5000/clientapp1时运行,并在我运行时运行 react 应用程序http://localhost:5000/clientapp2

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不起作用。

4

1 回答 1

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");
}
于 2018-07-30T06:59:24.017 回答