Angular-google-maps: Tidak kompatibel dengan Ivy (eksperimental)

Dibuat pada 1 Jun 2019  ·  54Komentar  ·  Sumber: SebastianM/angular-google-maps

Deskripsi masalah
Saat mengompilasi dengan Ivy, kompilasi gagal dengan kesalahan berikut:

ERROR in src/app/app.module.ts(8,12): error TS-991010: Value at position 1 in the NgModule.importss of AppModule is not a reference: [object Object]

Langkah-langkah untuk mereproduksi dan sedikit demo masalah
Saya tidak dapat membuat stackblitz atau plunker untuk ini karena ini bermaksud untuk menunjukkan kegagalan kompiler dan saya tidak tahu bagaimana mendemonstrasikannya.
Anda dapat melihat https://github.com/paullessing/agm-ivy-demo dan mencoba membangunnya setelah menjalankan yarn install .

  1. Instal proyek baru Angular 8 menggunakan ng new
  2. Tambahkan @agm/core dan siapkan impor default
    imports: [ BrowserModule, AgmCoreModule.forRoot({ apiKey: environment.mapsApiKey, }) ]
  3. Aktifkan Ivy di tsconfig.app.json :
    { ... "angularCompilerOptions": { "enableIvy": true } }
  4. Aktifkan AOT di angular.json untuk mengatasi " rute malas tidak ditemukan ":
    { "projects": { "my-project": { "architect": { "build": { "options": { ... "aot": true, } } } } } }
  5. Jalankan ng serve

Perilaku saat ini
Kompilasi gagal dengan kesalahan:

ERROR in src/app/app.module.ts(8,12): error TS-991010: Value at position 1 in the NgModule.importss of AppModule is not a reference: [object Object]

(Posisi 1 dalam array imports adalah AgmCoreModule.forRoot() )

Perilaku yang diharapkan / diinginkan
Tidak ada kegagalan kompilator

angular2 & versi angular-google-maps

"@agm/core": "1.0.0-beta.5",
Angular CLI: 8.0.1
Node: 10.16.0
OS: win32 x64
Angular: 8.0.0
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.800.1
@angular-devkit/build-angular     0.800.1
@angular-devkit/build-optimizer   0.800.1
@angular-devkit/build-webpack     0.800.1
@angular-devkit/core              8.0.1
@angular-devkit/schematics        8.0.1
@angular/cli                      8.0.1
@ngtools/webpack                  8.0.1
@schematics/angular               8.0.1
@schematics/update                0.800.1
rxjs                              6.4.0
typescript                        3.4.5
webpack                           4.30.0

Informasi lainnya
Kompilasi berfungsi saat Ivy dinonaktifkan.

Mungkin terkait dengan https://github.com/angular/angular/issues/28603 yang menyatakan bahwa jika package.json tidak berisi properti types atau typings , modul akan dikeluarkan dari kompilasi.

important bug build system

Komentar yang paling membantu

Saya setuju bahwa ini harus dirilis secepatnya. Ketidakcocokan library ini dengan ivy adalah salah satu dari sedikit masalah yang menghalangi kami untuk menguji ivy di aplikasi web skala menengah kami.

Semua 54 komentar

Tidak dapat mereproduksi. Mungkinkah importss memiliki dua 's?

Tidak dapat mereproduksi. Mungkinkah importir itu memiliki dua 's'?

Saya pikir itu karena ini adalah array dengan nama imports jadi pesan kesalahan mencoba untuk memajemukannya.

Saya baru saja mencoba lagi dengan proyek baru, dan masih gagal (dengan versi beta 6). Saya memperbarui detail di atas.

ok coba

ng new my-proj --enable-ivy
cd my-proj
npm install @agm/core

tambahkan AgmCoreModule.forRoot... ke impor

npm start

Itu benar-benar persis seperti yang saya lakukan di proyek demo yang saya tautkan dalam deskripsi di atas.

Masalah yang sama disini.

@paullessing @ ramses10 maukah Anda bergabung dengan Discord sehingga kita dapat mendiskusikan hal ini dengan lebih interaktif?

@ doom777 baik-baik saja untuk saya

direproduksi dengan build: prod
@ doom777 sudahkah Anda mencoba dengan bendera prod?

Saya mengalami masalah yang sama persis. Aplikasi saya mirip dengan contoh yang dibagikan oleh Paul. Saya mendapatkan Value at position 1 in the NgModule.importss of AppModule is not a reference: [object Object] untuk ng b --prod dan ng b .

Sudut: 8.0.0
@ agm / core: 1.0.0-beta.6

Hai, saya memiliki masalah yang sama saat Ivy diaktifkan:
ERROR di src / app / app.module.ts (37,12): error TS-991010: Nilai di posisi 16 di NgModule.importss dari AppModule bukan referensi: [object Object]

Berfungsi saat Ivy dinonaktifkan

Dengan melihat masalah tersebut saya menemukan 2 masalah terkait dalam paket angular dan angular-cli.

Tampaknya kesalahan tersebut berasal dari librairy yang berada di luar node_module dan tersedia menggunakan path-mapping .

Periksa komentar dan masalah berikut: https://github.com/angular/angular-cli/issues/14594#issuecomment -497288501

Dan juga masalah ini: https://github.com/angular/angular/issues/30945

Sayangnya saya tidak dapat membuat librairy berfungsi dengan teknik yang dijelaskan dalam komentar (tautan pertama) menggunakan: ./node_modules/.bin/ivy-ngcc -s ./dist .

Saya tidak begitu mengerti apa yang sedang terjadi, tapi mungkin itu bisa membantu Anda.

hmm, mungkin setelah menerapkan # 1648 itu akan berhasil. Saya tidak mengetahui adanya pustaka yang ditautkan dengan jalur di perpustakaan kami, tetapi kami menggunakan pengemasan yang tidak biasa

Adakah pembaruan tentang masalah ini?

masalah yang sama di sini saat menggunakan beta sudut dan ivy terbaru

setelah pengujian, # 1634 memperbaikinya sehingga masalahnya ada pada sistem build kami yang sudah usang. Semoga @SebastianM bisa mereview dan menggabungkan PR

Ada pembaruan tentang ini?

Ya, saya mencoba meminta penulis # 1634 untuk memperbarui PR-nya sehingga kita dapat menggabungkannya. Semoga minggu depan. Sejauh ini, saya tidak bisa mendapatkan tanggapan, tetapi jika itu terus berlanjut, saya akan mengkloning PR-nya dan melakukannya sendiri.

@terencehonles dapatkah Anda memperbarui https://github.com/SebastianM/angular-google-maps/pull/1634 ?

Tidak dipublikasikan ke npm?

Belum. Kami tidak mempublikasikan setiap komit.

Bisakah Anda menerbitkan yang ini, karena ini bisa dianggap sebagai yang utama karena menawarkan dukungan untuk Angular 9 / IVY

Belum. Kami tidak mempublikasikan setiap komit.

@ doom777 bisa jadi ide yang bagus untuk mempublikasikan karena ini adalah pembaruan besar dan memperkenalkan perbaikan besar ...

Saya setuju bahwa ini harus dirilis secepatnya. Ketidakcocokan library ini dengan ivy adalah salah satu dari sedikit masalah yang menghalangi kami untuk menguji ivy di aplikasi web skala menengah kami.

@ doom777 pembaruan apa pun terkait kapan versi ini atau berikutnya akan diterbitkan? Apakah ada kesulitan untuk mempublikasikan ke npm? Paket ini memiliki 65k + unduhan kecil, itulah cara banyak orang bisa mendapatkan keuntungan dari versi baru.

Dari membaca di sini https://docs.npmjs.com/creating-and-publishing-scoped-public-packages, saya memahami bahwa publidhing seharusnya merupakan proses yang cepat dan mudah, atau apakah saya melewatkan sesuatu? :)

Terima kasih

@ doom777 ada pembaruan?

Hai semuanya. Saya tahu beberapa dari Anda sangat ingin agar perbaikan ini dirilis, tetapi (1) Saya tidak bertanggung jawab untuk merilis versi agm baru, (2) kami merilisnya baru-baru ini, dan (3) Ivy masih dalam pratinjau, jadi sementara itu penting bagi kami untuk melepaskan dukungan, itu tidak PRIORITY 0 KRITIS .
Saya mengirim pesan kepada @SebastianM tentang merilis versi baru, dan saya menunggu tanggapan.

Terima kasih atas update dan informasinya.

Ya, Ivy hanya dalam pratinjau tetapi masih dapat membantu banyak pengembang hari ini.
Rilis terbaru seharusnya tidak menjadi masalah karena npm memungkinkan untuk rilis setiap 24 jam;)

Semoga @ebastian dapat mempertimbangkan rilis baru segera :)

Terima kasih

@ doom777 Bukan PRIORITAS 0 KRITIS, tapi sangat penting.

Angular akan merilis v9.0.0 yang akan mengaktifkan ivy secara default, dan paket ini tidak akan berguna dengan versi ini. Jika PR memperbaikinya, saya benar-benar tidak mengerti mengapa tidak merilis versi baru.

Selain itu, saya tidak melihat alasan paket ini masih dalam versi beta. Ini bekerja dengan baik di sini, tidak ada bug, tidak ada ketidakstabilan.

PR yang saya kirimkan (# 1634) adalah untuk mengatasi kompilasi AOT yang telah ada untuk sementara waktu (Angular 4+?), Dan ini seharusnya menjadi alasan yang baik untuk merilis rilis beta baru.

Mengenai # 1647: Ivy memerlukan kebetulan memerlukan AOT, itulah sebabnya ia akan rusak di Ivy, tetapi mungkin ada hal lain tentang pustaka yang perlu diubah untuk membuatnya benar-benar kompatibel dengan Ivy.

Di tempat kerja saya mulai bereksperimen dengan membangun aplikasi kami dengan Ivy, tetapi ada paket lain yang kami andalkan yang tampaknya memiliki masalah, dan meningkatkan ke Ivy bukanlah persyaratan inti dari aplikasi kami. Karena kami memiliki lebih banyak waktu untuk menguji dan kami berpotensi menambahkan lebih banyak fitur pemetaan, saya dapat melihat kontribusi perubahan apa pun yang menurut saya perlu, tetapi saya tidak dapat membuat komitmen apa pun tentang berapa banyak waktu yang saya miliki untuk membantu proyek ini.

@ iget-master Saya juga tidak akan mengatakan sejauh ini bahwa tidak ada bug dan tidak ada ketidakstabilan (bukan karena saya telah menjumpai satu pun, tetapi mungkin saja ada masalah dan mempertahankan tag "beta" membuatnya lebih mudah untuk mengulang dan ubah hal-hal yang perlu diubah sebelum memiliki API yang lebih stabil)

Kami mendapat tanggapan dari kontributor seperti itu bukan prioritas. Saya dapat membantahnya dan mengatakan melepaskan ini sehingga memperbaiki dukungan AOT dan Ivy agak signifikan. AOT sudah cukup lama dan dalam beberapa bulan Angular 9 akan hadir dengan Ivy stabil (diharapkan). Secara pribadi saya tidak melihat alasan untuk mengklaim itu adalah prioritas 0.

Kedua, apa masalahnya hanya dengan menjalankan perintah dan melepaskannya ke npm?

Diklaim oleh kontributor bahwa itu mungkin belum stabil, baik, dalam hal ini menyimpan bendera beta masuk akal. TAPI! Bukankah beta seharusnya menjadi hal yang mudah berubah? Yang berarti rilis yang sering diharapkan tetapi apa yang kami lihat hanyalah satu rilis sebulan. Mungkin ide yang baik untuk merilis versi saat ini sebagai versi stabil dan yang memperbaiki Ivy di bawah bendera beta jika ada kekhawatiran yang signifikan tentang 'ketidakstabilannya.

Dan ingat ~ 60 ribu orang setiap minggu berpotensi mendapatkan keuntungan dari versi baru;)

Terima kasih

Saya berpikir untuk menyalin repo ini dengan tepat dan merilisnya ke npm dengan nama yang berbeda, jadi semua orang yang menonton utas ini dapat mencobanya sampai mereka mengejar ketinggalan. Adakah orang lain yang berpikir untuk melakukan ini?

Saya ikut.

Kami tidak menentang Anda melakukan forking dan menerapkan lib kami, itulah mengapa ini open source. 😄
Saya mencoba mengeluarkannya, tetapi tidak semudah 'menjalankan perintah'. Saya berharap beta.8 akan dirilis jauh sebelum Angular 9.

Bagaimana saya bisa membantu? Adakah fitur yang perlu diuji atau dikembangkan?

@mruknowme tolong jangan lakukan itu.

@ doom777 mulai melakukan hal itu sebelum ada lebih banyak daya tarik pada repo ini. Dia telah melakukan banyak hal untuk membantu membuat bola bergerak dan saya mengerti Anda tidak senang dengan kecepatannya, tetapi itu _has_ menjadi lebih baik dan forking hanya membingungkan orang daripada membuat kita semua bekerja sama untuk mencoba membuat segalanya lebih cepat.

Pembaruan: Saya mencoba untuk merilis ini, sayangnya Sebastian tidak dapat dijangkau dan hanya dia yang dapat melakukan penyebaran npm.

Hei,

melihat utas ini secara tidak sengaja. @Ephraim di mana Anda mengirim saya pesan?
Mungkin pengaturan push saya kacau 😕 Saya bisa memasukkan versi baru saat saya
rumah. Maaf atas keterlambatannya!

Ephraim Khantsis [email protected] schrieb am Mo. 16. Sep. 2019 um
17:06:

Pembaruan: Saya mencoba untuk merilis ini, sayangnya Sebastian
tidak dapat dijangkau dan hanya dia yang dapat melakukan penyebaran npm.

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/SebastianM/angular-google-maps/issues/1647?email_source=notifications&email_token=AACDGRABQG3CO4VBHKU3N23QJ6OHZA5CNFSM4HSA7KD2YY3PNVWWK3K3TUL52HS4DFVREXG63ZGLON5BBAFVREXG43ZTD185
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AACDGRFLFLAZMJKKVQZUM7DQJ6OHZANCNFSM4HSA7KDQ
.

Hai @Sebastian ,

maaf, tidak dapat mengingat bahwa saya mengirimi Anda pesan!
Mengapa saya harus mengirimi Anda pesan?

Bersulang,
Efraim

@SebastianM, apakah Anda mengacu pada komentar @ doom777 https://github.com/SebastianM/angular-google-maps/issues/1647#issuecomment -524882295?

BTW Saya juga mengirim Anda pesan di twitter: D

Kami semua memahami bahwa Anda sibuk dan menghargai waktu dan upaya Anda untuk mempertahankan plugin ini :)

Hei! Senang Anda ada di sekitar. Saya selalu berusaha menghubungi Anda di twitter.

@SebastianM Jika Anda sudah tersedia, dapatkah Anda memperbarui template stackblitz untuk menggunakan versi RUPS terbaru?

Ya, tentu

Am Mo., 16 September 2019 um 20:20 Uhr schrieb Ephraim Khantsis <
[email protected]>:

@SebastianM https://github.com/SebastianM Jika Anda sudah tersedia,
dapatkah Anda memperbarui template stackblitz untuk menggunakan versi RUPS terbaru?

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/SebastianM/angular-google-maps/issues/1647?email_source=notifications&email_token=AACDGRDKLMG7VFW7CP6KVYDQJ7E5PA5CNFSM4HSA7KD2YY3PNVWWK3K3TUL52HS4DFVVREXG43VNTUL52HS4DFVREXG43VNTUL52HS4DFVREXG43
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AACDGRA3WT7CYHW3JSZEMC3QJ7E5PANCNFSM4HSA7KDQ
.

@SebastianM @agm/core 1.0.0 bekerja dengan baik dengan Angular 9.0.0-next.6 tetapi dengan Angular 9.0.0-next.7 itu mulai memunculkan kesalahan ini lagi https://github.com/angular/angular/issues/32506

Bisakah Anda melihatnya?

Melihat ini sekarang, @agm/core 1.0.0 memiliki bundel yang memiliki dekorator yang direpresentasikan dengan cara yang aneh bagi saya. Saya sedang memeriksanya.

Terima kasih @JoostK ,

Jadi saya dapat mengonfirmasi bahwa ngcc tidak dapat menangani cara dekorator dipancarkan sejak https://github.com/ng-packagr/ng-packagr/pull/1401 , dirilis di ng-packagr 5.5.1.

Namun ini masih mengejutkan, karena file yarn.lock dalam repo ini menunjukkan bahwa ng-packagr 5.4.3 sedang digunakan. @SebastianM dapatkah Anda mengonfirmasi apakah rilis ng-packagr yang lebih baru sedang digunakan untuk penerbitan, tanpa memperbarui file yarn.lock ?

Tidak, itu digunakan dengan 5.4.3

Pembaruan: mencoba dengan 5.5.1 juga tidak membantu

Berikut PR yang berhubungan dengan cara dekorator hadir di @agm/core 1.0.0: https://github.com/angular/angular/pull/32901

@ doom777 bagaimana Anda tahu, apakah Anda yang menerbitkan rilis? Saya tidak begitu mengerti bagaimana rilis 1.0.0 dari @agm/core dapat memiliki panggilan ctorParameters dan __decorate jika dibuat dengan apa pun selain ng-packagr 5.5.1 .

Plugin ini bekerja sempurna dengan Angular 9.0.0-next.9, terima kasih @JoostK untuk pekerjaan yang luar biasa :)

Saya akhirnya beralih ke @ angular / google-maps, bekerja dengan baik sejauh ini :)

ok, semoga berhasil. Perlu diingat, ini memiliki fitur yang jauh lebih sedikit

Hanya untuk menambahkan: Kami mengalami kesulitan untuk kompatibel dengan angular ivy di 8.0, tetapi di 9.0 berfungsi dengan baik.

"@angular/core": "~9.1.0",
ketika saya menambahkan forRoot ke modul fitur dan menyebutnya dalam AppModule->Imports . Kesalahan ini terjadi. Tidak dapat menemukan solusi apa pun. Saya menggunakan Angular CLI Today untuk membuat Aplikasi baru.

"@angular/core": "^9.1.6",
sama...
"ketika saya menambahkan forRoot ke modul fitur dan memanggilnya di AppModule-> Impor. Kesalahan ini terjadi. Tidak dapat menemukan solusi apa pun. Saya menggunakan Angular CLI Today untuk membuat Aplikasi baru."

Akhirnya menemukan masalah untuk kasus saya.

... dalam modul ...

let registry = null;

export class UiUniversalCoreModule {
  public static forRoot(elements): ModuleWithProviders<UiUniversalCoreModule> {
    // Angular 9 required <UiUniversalCoreModule>
    registry = elements; // and had to change this code to work.
    return {
      ngModule: UiUniversalCoreModule,
      providers: [
        ComponentBuilderService
      ]
    };
  }
}

... Diubah menjadi ...

let registry = null;
function ngModuleIssue(elements){
  registry = elements;
  return ComponentBuilderService;
}

export class UiUniversalCoreModule {
  public static forRoot(elements): ModuleWithProviders<UiUniversalCoreModule> {
    return {
      ngModule: UiUniversalCoreModule,
      providers: [
        ngModuleIssue(element)
      ]
    };
  }
}
Apakah halaman ini membantu?
0 / 5 - 0 peringkat