Deskripsi masalah
Saat ini paket ini membutuhkan @angular/common@^4.0.0 || ^5.0.0
dan @angular/core@^4.0.0 || ^5.0.0
. Saya pikir perubahannya tidak begitu relevan, jadi mungkin migrasi untuk mendukung angular 6 itu mudah.
Masalah utama yang saya temukan adalah tentang perubahan RxJS ke v6.0.0, di mana beberapa modul mengubah jalurnya, jadi kami perlu memperbaruinya.
Mungkin juga perlu rilis versi 2.0.0, karena ada banyak perubahan yang mengganggu pada dependensi paket
Di sini untuk komentar
Hai,
Baru saja mencoba menjalankan proyek saya, ini adalah kesalahan terkait:
node_modules/@agm/core/services/google-maps-api-wrapper.d.ts(2,10): error TS2305: Module '"my-project/node_modules/rxjs/Observable"' has no exported member 'Observable'.
node_modules/@agm/core/services/managers/circle-manager.d.ts(2,10): error TS2305: Module '"my-project/node_modules/rxjs/Observable"' has no exported member 'Observable'.
node_modules/@agm/core/services/managers/data-layer-manager.d.ts(2,10): error TS2305: Module '"my-project/node_modules/rxjs/Observable"' has no exported member 'Observable'.
node_modules/@agm/core/services/managers/info-window-manager.d.ts(1,10): error TS2305: Module '"my-project/node_modules/rxjs/Observable"' has no exported member 'Observable'.
node_modules/@agm/core/services/managers/kml-layer-manager.d.ts(2,10): error TS2305: Module '"my-project/node_modules/rxjs/Observable"' has no exported member 'Observable'.
node_modules/@agm/core/services/managers/marker-manager.d.ts(2,10): error TS2305: Module '"my-project/node_modules/rxjs/Observable"' has no exported member 'Observable'.
node_modules/@agm/core/services/managers/polygon-manager.d.ts(2,10): error TS2305: Module '"my-project/node_modules/rxjs/Observable"' has no exported member 'Observable'.
node_modules/@agm/core/services/managers/polyline-manager.d.ts(2,10): error TS2305: Module '"my-project/node_modules/rxjs/Observable"' has no exported member 'Observable'.
"@agm/core": "^1.0.0-beta.2",
"@angular/*": "6.0.0",
"rxjs": "^6.1.0",
"typescript": "2.7.2"
Saya memecahkan masalah saya melalui menginstal
npm install rxjs<strong i="6">@6</strong> rxjs-compat<strong i="7">@6</strong> --save
seperti yang dijelaskan https://github.com/ReactiveX/rxjs/blob/master/MIGRATION.md
Peta agm rusak dengan RXJS 6 dan memerlukan modul kompatibilitas untuk kompatibilitas mundur
Saya masih memiliki masalah dengan "snazzy-info-window" setelah peningkatan Angular 6.
core.js:1601 ERROR Error: Uncaught (in promise): TypeError: elems[0] is not a constructor
TypeError: elems[0] is not a constructor
at snazzy-info-window.js:130
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:388)
at Object.onInvoke (core.js:4071)
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:387)
at Zone.push../node_modules/zone.js/dist/zone.js.Zone.run (zone.js:138)
at zone.js:872
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
at Object.onInvokeTask (core.js:4062)
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)
at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188)
at snazzy-info-window.js:130
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:388)
at Object.onInvoke (core.js:4071)
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:387)
at Zone.push../node_modules/zone.js/dist/zone.js.Zone.run (zone.js:138)
at zone.js:872
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
at Object.onInvokeTask (core.js:4062)
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)
at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188)
at resolvePromise (zone.js:814)
at resolvePromise (zone.js:771)
at zone.js:873
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
at Object.onInvokeTask (core.js:4062)
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)
at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188)
at drainMicroTaskQueue (zone.js:595)
Dan saya juga mendapatkan pesan peringatan ini:
client?719c:153 ./node_modules/@agm/snazzy-info-window/directives/snazzy-info-window.js
System.import() is deprecated and will be removed soon. Use import() instead.
For more info visit https://webpack.js.org/guides/code-splitting/
Hati-hati dengan penggunaan paket rxjs-compat
, karena ini hanya solusi dan akan menambah banyak biaya untuk proyek Anda. Sekarang diperlukan karena banyak paket seperti ini yang belum ditingkatkan ke RxJS 6, tetapi hapus sesegera mungkin.
@epenance melakukan pekerjaan yang bagus dengan memperbarui paket ke [email protected] , tapi saya pikir sebelum membuatnya sepenuhnya kompatibel dengan Angular6, perlu memeriksa setiap perubahan yang melanggar.
@ukon1990 angular 6 beralih untuk menggunakan webpack 4, yang mengubah perilaku saat mengimpor modul commonjs secara dinamis. Saya tidak tahu mengapa tetapi arahan snazzy-info-window menggunakan perpustakaan snazzy-info-window impor dinamis, itu sebabnya ada satu peringatan dan arahan snazzy-info-window yang rusak. Untuk memperbaikinya https://github.com/SebastianM/angular-google-maps/blob/1a74b3a9670cf4dbf442033a17dea290dfadc408/packages/snazzy-info-window/directives/snazzy-info-window.ts#L228
harus diubah menjadi this._nativeSnazzyInfoWindow = new elems[0].default(options);
tetapi ini bukan solusi kompatibilitas mundur (tidak akan berfungsi di angular5/webpack3). Saya tidak tahu bagaimana memperbaikinya dengan benar.
Saya cukup yakin @SebastianM hanya perlu menabrak paket satu versi utama karena Angular 6 merusak banyak hal di compat mundur.
@Epenance ya, itulah yang mungkin harus saya lakukan, yang sedikit mengganggu karena saya harus mengelola dua cabang (karena terlalu sedikit orang yang akan menggunakan v6 dalam waktu dekat).
angular-google-maps berfungsi dengan baik di v6 dengan rxjs-compat (kecuali komentar @iget-master), tetapi arahan snazzy-info-window benar-benar rusak sekarang. Mungkin cara paling sederhana adalah mengubah impor dinamis menjadi statis.
@SebastianM Anda bisa untuk saat ini:
Semua orang harus bahagia bukan?
@SebastianM tentang dua cabang, ada juga ngx-translate
cara untuk memutakhirkan, satu cabang tunggal, rilis terakhir hanya kompatibel dengan v6, tidak ada kompatibilitas mundur sudut
tidak mengatakan itu benar-benar caranya, hanya ingin menunjukkan bahwa perpustakaan besar lainnya (dalam hal unduhan bulanan) memilih jalur seperti itu
@jimmykane tidak, karena rxjs 6 tidak kompatibel dengan sudut 4/5. Saya pikir ada solusi...PR akan datang
@peterpeterparker Saya pikir masuk akal untuk mendukung dua versi terbaru, yang sekarang bersudut 5/6 dan saya menemukan cara yang kompatibel ke belakang (yang bahkan seharusnya berfungsi dengan sudut 4 untuk saat ini tetapi saya akan menandai versi berikutnya dengan dukungan untuk sudut 5/ 6) - Tapi senang untuk mendiskusikannya lebih lanjut
@SebastianM jangan khawatir sama sekali, hanya ingin membawa info, saya senang dengan cara apa pun karena saya sudah memigrasikan situs web saya ke v6
IMO, karena migrasi ke Angular 6 hampir tanpa rasa sakit (setidaknya pada proyek kami), saya tidak melihat alasan untuk mempertahankan versi untuk 4 dan 5. Berikan saja perbaikan keamanan yang berbahaya.
@SebastianM benar-benar membutuhkannya untuk ditingkatkan secara asli
Apakah kami akan memiliki rilis stabil untuk dukungan Angular 6? Bekerja dengan baik dengan rxjs-compat, tetapi saya ingin menghapusnya secepatnya
Hei..ada update tentang ini?
Oh! Saya baru saja memutakhirkan ke Angular 6 dan saya memiliki masalah pada jendela info-Snazzy yang Anda diskusikan:
Kesalahan: Tidak tertangkap (dalam janji): TypeError: elems[0] bukan konstruktor
TypeError: elems[0] bukan konstruktor
di snazzy-info-window.js:130
Apakah Anda punya ide bagaimana memperbaikinya?
Terima kasih!
@manuelsanchezaponte untuk saat ini, solusi @john-hi berfungsi, ubah baris 130 menjadi _this._nativeSnazzyInfoWindow = new elems[0].default(options);
di node_modules/@agm/snazzy-info-window/directives/snazzy-info-window.js
. Ini adalah solusi sementara sementara paket mendukung angular 6.
@LordShiroe benar yang tampaknya merupakan perbaikan cepat. AGM adalah pemblokir terakhir untuk meningkatkan ke v6.
Terima kasih @SebastianM, terima kasih atas perbaikan cepatnya! bekerja seperti pesona. 🥇.
Wah kamu penguji cepat :D senang itu berhasil
@SebastianM terima kasih banyak 👍
Komentar yang paling membantu
Saya memecahkan masalah saya melalui menginstal
npm install rxjs<strong i="6">@6</strong> rxjs-compat<strong i="7">@6</strong> --save
seperti yang dijelaskan https://github.com/ReactiveX/rxjs/blob/master/MIGRATION.md
Peta agm rusak dengan RXJS 6 dan memerlukan modul kompatibilitas untuk kompatibilitas mundur