Cập nhật & giải pháp chính xác để khắc phục điều này
Dựa trên câu trả lời từ Trần Quang , tôi đã đi để xem CHANGELOG.md của ionic-native
và đến để biết rằng họ vừa cập nhật phần mềm của họ để biên dịch với góc 9.
Do đó bạn cần cập nhật bất kỳ / tất cả các phụ thuộc của @ionic-native
. Đối với điều này, hãy xem tất cả các phụ thuộc trong package.gson
tệp của bạn bắt đầu @ionic-native/
và cập nhật từng cái một.
Ví dụ: đây là package.gson
:
Vì vậy, tôi đã phải chạy các lệnh sau để cập nhật tất cả các @ionic-native
phụ thuộc của mình :
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
Tương tự bạn phải làm cho @ionic-native
phụ thuộc của bạn . Chỉ cần đảm bảo, những bản đó được cập nhật tối thiểu thành v5.21.5
(vì một vài bản phát hành cũ không hoạt động).
Chúc mừng
Nếu vì lý do nào đó, bạn không thể cập nhật các @ionic-native
phụ thuộc của mình , hãy xem câu trả lời ban đầu của tôi để biết các cách giải quyết / giải pháp khác nhau
Câu trả lời gốc
Đối với tôi, các giải pháp sau đây đã làm việc. Không chắc chúng có hoàn hảo để thêm hay không nhưng hy vọng nhóm Ionic sẽ khắc phục điều này vì những giải pháp này không cần thiết khi tôi nâng cấp ứng dụng Angular đơn giản của mình lên Angular 9.
Giải pháp 1
Tắt AOT bằng cách thay đổi "aot": true
thành "aot: false
trong angular.json
tệp. Tôi sẽ không khuyến nghị điều này vì điều này giúp cải thiện hiệu suất của ứng dụng Angular và cải thiện việc bắt mã lỗi trong chế độ phát triển.
Giải pháp 2
Nếu bạn không muốn thay đổi angular.json
và chỉ muốn khắc phục sự cố này ionic serve
, hãy chuyển --aot=false
cờ cho ng
lệnh bằng cách sử dụng --
:
ionic serve -- --aot=false
Giải pháp 3 (tùy chọn mù)
Nếu không có giải pháp nào ở trên phù hợp với bạn, bạn có thể chạy một lệnh npm update
sẽ cập nhật theo nghĩa đen tất cả các phụ thuộc từ bạn package.json
(có nghĩa là, phụ thuộc Ionic cũng sẽ được cập nhật).
Đây là một lựa chọn mù quáng bởi vì bạn sẽ không có ý tưởng rằng các phụ thuộc nào được cập nhật và những thay đổi đột phá trong các phụ thuộc được cập nhật đó là gì. Vì vậy, bạn có thể sẽ sửa chữa các vấn đề khác vì điều này.
Vì vậy, tùy thuộc vào bạn để chấp nhận rủi ro này :) Vâng, điều này đáng làm nếu ứng dụng của bạn không lớn hoặc không sử dụng bất kỳ mã nào bị xóa trong các phụ thuộc mới hơn.
Giải pháp 4 (tùy chọn cuối cùng & tồi tệ nhất)
Thêm import '@angular/compiler';
vào main.ts
tập tin. Nhưng điều này có thể làm tăng kích thước bó.
Thêm
Trong khi nâng cấp Ionic, bạn có thể phải đối mặt với một vấn đề khác vì sai import
trong polyfills.ts
. Nếu có, hãy xem src / zone-flags.ts bị thiếu trong quá trình biên dịch TypeScript sau khi nâng cấp lên Ionic 5