Aplikacja dotnet core SPA z najnowszym angularem.

0

Witam

Do tej pory używałem angular 8, wyszła już wersja 11, więc starego odinstalowałem, wyczyściłem cache i ponownie zainstalowałem. Polecenie ng tworzy mi aplikację w najnowszym angularze, jednak polecenie dotnet new angular wciąż tworzy aplikację z angularem w wersji 8.

Jak wygenerować aplikację dotnet core SPA z najnowszym angularem ?

0

Wydaje mi się, że problem jest po stronie templatki od Microsoft, która nie jest tak dynamicznie aktualizowana jak wersje Angular-a :)

Widzę dwa rozwiązania:

  1. Generować projekt poleceniem dotnet new angular - zrobić update przez CLI do wymaganej wersji
  2. Nie bawić się w gotowce i generować aplikację Angular od razu przez CLI (co osobiście preferuję i polecam)
0

Wybrałem drugą opcję. Usunąłem z katalogu ClientApp całą zawartość a następnie poleceniem ng new zainstalowałem najnowszego angulara. Pojawia się problem w konsoli, dotnet wyrzuca błędy:

fail: Microsoft.AspNetCore.SpaServices[0]
Generating browser application bundles...

fail: Microsoft.AspNetCore.SpaServices[0]
ÔłÜ Browser application bundle generation complete.

Przechwytywanie.PNG

W konfiguracji angular.json zmieniłem ścieżkę "outputPath" na "dist", która jest w starszej wersji instalowanej przez dotnet new.

Bezpośrednio ng serve uruchamia projekt.

Niestety nie potrafię znaleźć przyczyny. Macie jakieś sugestie?

0

@marcin82w: skoro wywaliłeś wszystko z ClientApp to node_modules pewnie też, pamiętałeś żeby zainstalować moduły na nowo?

npm install
0

Dokładnie to zrobiłem, instalowałem moduły. NG new domyślnie tworzy nowy projekt i instaluje moduły. Mimo tego usunąłem cały katalog node_modules i ponownie zainstalowałem moduły poprzez npm install. Z kolejnym podejściem utworzyłem nowy projekt z flagą --skip install, po czym uruchomiłem npm install aby doinstalować wszystkie niezbędne paczki. Żaden z opisanych sposobów nie działa.

0

Do końca nie rozumiem, po co robisz to?

Mimo tego usunąłem cały katalog node_modules i ponownie zainstalowałem moduły poprzez npm install. Z kolejnym podejściem utworzyłem nowy projekt z flagą --skip install

czy po wpisaniu ng new <app_name> nie tworzy Ci nowej aplikacji? Jaką masz wersję Angular CLI i jaką wersję dla aplikacji Ci pokazuje?

0

Tworzę aplikację poprzez dotnet new <app_name>. Dotnet tworzy kompletną aplikację SPA, jest to aplikacja ze starszą wersją angulara, angular 8. Taka aplikacja w pełni wygenerowana przez dotnet działa poprawnie, jednak chcę zaktualizować wersję angulara do najnowszej, obecnie wersji 11. A więc usunąłem całą zawartość katalogu ClientApp, ponownie utworzyłem nowy projekt angulara w tym katalogu, ng tworzy aplikację angular w wersji 11. node_modules poprzez npm install zainstalowane ponownie. Sam angular uruchomiony poprzez ng serve w katalogu ClientApp działa poprawnie, ale cała aplikacja dotnet (dotnet watch run) z angularem pokazuje błędy w konsoli jak trzecim poście.

Owszem można pisać oddzielnie backend i frontend ale po co utrudniać sobie życie jak można by to robić w jednej aplikacji. I to w starszych wersjach angulara działało.

0

Pozostaje kwestia konfiguracji w Startup.cs. Czy konfiguracja jest szablonowa, jeszcze z wersji Angular 8? Czy po podniesieniu wersji Angular nie trzeba skonfigurować klienta inaczej w pliku startup? Czy może też wersja .NET Core się zmieniła z 2.x do 3.x?

0
bakunet napisał(a):Czy może też wersja .NET Core się zmieniła z 2.x do 3.x?

Dotnet tworzy mi aplikację z net core w wersji 3.1 Jest już nowsza oznaczona numerem 5 jednak 3.1 jest LTS więc chyba warto przy niej pozostać.

0
marcin82w napisał(a):
bakunet napisał(a):Czy może też wersja .NET Core się zmieniła z 2.x do 3.x?

Dotnet tworzy mi aplikację z net core w wersji 3.1 Jest już nowsza oznaczona numerem 5 jednak 3.1 jest LTS więc chyba warto przy niej pozostać.

Wydaje mi się, że szablon ASP.NET Core + Angular może być z konfiguracją w Startup.cs dla Core 2.x + Angular 8. Jeśli korzystasz z nowszych wersji to konfiguracja może być już inna.

0

Zrobię jeszcze metodę 1 wskazaną w poście 2 - aktualizację poprzez ng update.

0

@marcin82w: możesz spróbować w Startup.cs dodać konfigurację w tym stylu:

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

                if (env.IsDevelopment())
                {
                    spa.UseProxyToSpaDevelopmentServer("http://localhost:4200");
                }
            });

U mnie na .Net Core 3.1 + Angular 9 bangla :) W podanej powyżej konfiguracji Angular nie startuje razem z .Net, musisz sobie osobno odpalić ng serve

1 użytkowników online, w tym zalogowanych: 0, gości: 1