Запуск Angular с NG подачей с сердечником Dotnet Angular - PullRequest
0 голосов
/ 16 октября 2018

Я создал новый проект Angular с CLI ядра dotnet:

dotnet new angular -o my-app

Я настроил собственный процесс развертывания и сборки вне моего проекта, поэтому мой проект по сути глуп, когда дело доходит достроительство и развертывание.Мой проект никогда не должен создавать файлы .js и хранить их локально в проекте.В основном это то, что я хочу:

  1. Я нажимаю F5 / запускаю отладчик
  2. Проект ядра Dotnet запускается и запускается npm install && ng serve
  3. После завершения или когданеобходимо, откроется браузер и покажет сайт ng serve (я думаю, по умолчанию http://localhost:4200)

Пока я близок к тому, чтобы заставить это работать, но по какой-то причине, дотнетБазовый проект предоставляет мне встроенные статические файлы, которые мне не нужны (потому что я хочу перезагрузить в реальном времени с ng serve).Вот что я могу сделать прямо сейчас:

  1. Нажмите F5, чтобы запустить отладчик.
  2. . Появится окно ng с информацией об отладке, которая отображает такие данные, как npm install и * 1026.* были запущены
  3. Открывает http://localhost:5000, который предоставляет мне статические файлы, как если бы я создал приложение с ng build

Если я смогу объяснить, чего я действительно хочу:

  1. Нажмите F5 для запуска отладчика
  2. Проект запустится, и откроется окно ng, показывающее, что я запустил npm install && ng serve -port 4200
  3. Браузер запускает http://localhost:4200

Прямо сейчас он открывается на порту 5000 (или что-то, что я указываю в файле launchSettings.json), но я не могу заставить его запустить 4200, потому что технически я не хочу, чтобы мой основной проект dotnet запустил новыйвеб-сервер (так как ng serve уже создает его).Возможно ли это?

package.json

"scripts": {
    "start": "npm install && ng serve --port 4200 &REM"
}

Startup.cs

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
        }

        app.UseSpa(spa =>
        {
            spa.Options.SourcePath = "component";

            if (env.IsDevelopment())
            {
                spa.UseAngularCliServer("start");
            }
        });
    }
}

1 Ответ

0 голосов
/ 17 мая 2019

Я нашел это .

В двух словах, вам нужно заменить следующую строку в Startup.cs

spa.UseAngularCliServer(npmScript: "start");

на

spa.UseProxyToSpaDevelopmentServer("NG-SERVER-URL");

Вы должны запустить ng serve один раз, это скажет вам URL, где он слушает (NG-SERVER-URL)

Эта модификация позволяет запускать ng serve в отдельном процессе.Asp.Net будет подключаться и отправлять вызовы к нему.

...