Zaktualizowane i poprawne rozwiązanie, aby to naprawić
Na podstawie odpowiedzi z Tran Quang , poszedłem zobaczyć CHANGELOG.md się ionic-native
i poznał, że niedawno zaktualizowany ich pakiet skompilować z kątowym 9.
Dlatego musisz zaktualizować dowolne / wszystkie zależności @ionic-native
. W tym celu przejrzyj wszystkie zależności w package.gson
pliku, które zaczynają się od, @ionic-native/
i aktualizuj je jeden po drugim.
Na przykład to moje package.gson
:
Musiałem więc uruchomić następujące polecenia, aby zaktualizować wszystkie moje @ionic-native
zależności:
npm i @ionic-native/core@latest
npm i @ionic-native/camera@latest
npm i @ionic-native/firebase-x@latest
npm i @ionic-native/splash-screen@latest
npm i @ionic-native/status-bar@latest
To samo, co musisz zrobić dla swoich @ionic-native
zależności. Tylko upewnij się, że są one aktualizowane do minimum v5.21.5
(ponieważ kilka starych wersji nie działało).
Pozdrawiam 😀🎉🎊
Jeśli z jakiegoś powodu nie możesz zaktualizować swoich @ionic-native
zależności, spójrz na moją oryginalną odpowiedź na różne obejścia / rozwiązania ⬇️
Oryginalna odpowiedź
Dla mnie zadziałały następujące rozwiązania. Nie jestem pewien, czy są idealne do dodania, ale mam nadzieję, że zespół Ionic to naprawi, ponieważ te rozwiązania nie były potrzebne, gdy zaktualizowałem moją zwykłą aplikację Angular do Angular 9.
Rozwiązanie 1
Wyłącz AOT, zmieniając "aot": true
na "aot: false
w angular.json
pliku. Nie poleciłbym tego, ponieważ poprawia to wydajność aplikacji Angular i poprawia przechwytywanie kodów błędów w trybie programowania.
Rozwiązanie 2
Jeśli nie chcesz się zmieniać angular.json
i chcesz tylko rozwiązać ten problem ionic serve
, przekaż --aot=false
flagę do ng
polecenia, używając --
:
ionic serve -- --aot=false
Rozwiązanie 3 (opcja w ciemno)
Jeśli żadne z powyższych rozwiązań nie działa dla Ciebie, możesz uruchomić polecenie, npm update
które zaktualizuje dosłownie wszystkie zależności z twojego package.json
(to znaczy, że zależności jonowe również zostaną zaktualizowane).
Jest to opcja ślepa, ponieważ nie masz pojęcia, które zależności są aktualizowane i jakie są przełomowe zmiany w tych zaktualizowanych zależnościach. Dlatego możesz z tego powodu rozwiązać inne problemy.
Więc to od Ciebie zależy, czy podejmiesz to ryzyko :) Cóż, warto to zrobić, jeśli Twoja aplikacja nie jest tak duża lub nie używa żadnych kodów usuniętych w nowszych zależnościach.
Rozwiązanie 4 (ostatnia i najgorsza opcja)
Dodaj import '@angular/compiler';
w main.ts
pliku. Ale może to zwiększyć rozmiar pakietu.
Dodatkowy
Podczas uaktualniania jonowe, można zmierzyć się kolejny problem, ponieważ od zła import
w polyfills.ts
. Jeśli tak, sprawdź, czy po kompilacji TypeScript po aktualizacji do Ionic 5 brakuje src / zone-flags.ts.
W przypadku Angulara: zatrzymanie terminala i ponowne jego obsłużenie
ng serve
rozwiązało problem.źródło
Spróbuj
ng serve --aot
, pomogło mi to naprawić problem, to znaczy, jeśli chcesz uruchomić z aot, który jest zalecany, ponieważ będzie podobny do kompilacji produkcyjnej i pomoże szybciej wykryć błędy.Mam nadzieję że to pomoże.
Angular Link: https://angular.io/guide/aot-compiler
źródło
Ponieważ aktualizacja jonowa nie jest wystarczająco szybka, możesz spróbować:
npm i @ionic-native/status-bar@beta @ionic-native/splash-screen@beta @ionic-native/core@beta -S
pracuj dla mnie.aktualizacja 2020/02/18 => możemy
npm i @ionic-native/status-bar @ionic-native/splash-screen @ionic-native/core -S
teraz uruchomić, aby uzyskać najnowszą stabilną wersjęźródło
trzeba również zaktualizować jonową, będzie działać. W przypadku wersji kątowej, gdy aktualizuje wersję, sama aktualizuje wszystkie zależne. Ale w jonowej trzeba zaktualizować ręcznie.
źródło
Uruchamianie
npm update
rozwiązało problem dla mnie.źródło
npm update
dosłownie zaktualizuje każdą i każdą zależność i nie będziesz miał pojęcia, że to, co jest zaktualizowane i co nie. Może to również prowadzić do innych błędów.