Angular-google-maps: Nicht kompatibel mit Ivy (experimentell)

Erstellt am 1. Juni 2019  ·  54Kommentare  ·  Quelle: SebastianM/angular-google-maps

Fehlerbeschreibung
Beim Kompilieren mit Ivy schlägt die Kompilierung mit folgendem Fehler fehl:

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]

Schritte zur Reproduktion und eine minimale Demo des Problems
Ich konnte dafür keinen Stackblitz oder Plunker erstellen, da dies einen Compilerfehler anzeigen soll, und ich weiß nicht, wie ich dies demonstrieren soll.
Sie können https://github.com/paullessing/agm-ivy-demo überprüfen und versuchen, nach dem Ausführen von yarn install zu erstellen.

  1. Installieren Sie das neue Projekt von Angular 8 mit ng new
  2. Fügen Sie @agm/core und richten Sie den Standardimport ein
    imports: [ BrowserModule, AgmCoreModule.forRoot({ apiKey: environment.mapsApiKey, }) ]
  3. Aktiviere Ivy in tsconfig.app.json :
    { ... "angularCompilerOptions": { "enableIvy": true } }
  4. Aktivieren Sie AOT in angular.json , um " faule Routen nicht gefunden " zu
    { "projects": { "my-project": { "architect": { "build": { "options": { ... "aot": true, } } } } } }
  5. Führen Sie ng serve

Aktuelles Verhalten
Kompilierung schlägt mit Fehler fehl:

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]

(Position 1 im imports Array ist das AgmCoreModule.forRoot() )

Erwartetes / gewünschtes Verhalten
Keine Compilerfehler

Angular2 & Angular-Google-Maps-Version

"@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

Andere Informationen
Kompilieren funktioniert, wenn Ivy deaktiviert ist.

Kann mit https://github.com/angular/angular/issues/28603 verwandt sein, das besagt, dass, wenn das package.json keine types oder typings Eigenschaft enthält, die Modul wird von der Kompilierung ausgeschlossen.

important bug build system

Hilfreichster Kommentar

Ich bin damit einverstanden, dass dies so schnell wie möglich veröffentlicht werden muss. Die Inkompatibilität dieser Bibliothek mit Efeu ist eines der wenigen Probleme, die uns daran hindern, Efeu in unserer mittelgroßen Web-App zu testen.

Alle 54 Kommentare

Unmöglich zu reproduzieren. Könnte es sein, dass importss zwei 's' hat?

Unmöglich zu reproduzieren. Könnte es sein, dass importss zwei 's' hat?

Ich denke, das liegt daran, dass es sich um ein Array mit dem Namen imports sodass die Fehlermeldung versucht, es zu pluralisieren.

Ich habe es gerade noch einmal mit einem brandneuen Projekt versucht und es schlägt immer noch fehl (mit Beta-Version 6). Ich habe die obigen Details aktualisiert.

OK Versuch

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

Fügen Sie den Importen AgmCoreModule.forRoot...

npm start

Das ist buchstäblich genau das, was ich in dem Demo-Projekt gemacht habe, das ich in der obigen Beschreibung verlinkt habe.

Selbes Problem hier.

@paullessing @ ramses10 Möchten Sie Discord beitreten, damit wir dies interaktiver diskutieren können?

@ doom777 gut für mich

reproduziert mit build: prod
@ doom777 hast du es mit prod flag versucht?

Ich habe genau das gleiche Problem. Meine App ähnelt dem Beispiel, das Paul geteilt hat. Ich bekomme die Value at position 1 in the NgModule.importss of AppModule is not a reference: [object Object] sowohl für ng b --prod als auch für ng b .

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

Hallo, ich habe das gleiche Problem, wenn Ivy aktiviert ist:
FEHLER in src / app / app.module.ts (37,12): Fehler TS-991010: Wert an Position 16 in NgModule.importss von AppModule ist keine Referenz: [Objekt Objekt]

Funktioniert, wenn Ivy deaktiviert ist

Beim Betrachten des Problems fand ich 2 verwandte Probleme im Winkel- und Winkel-Cli-Paket.

Es scheint, dass der Fehler von einer Bibliothek stammt, die außerhalb von node_module und mit path-mapping verfügbar gemacht wurde.

Überprüfen Sie den folgenden Kommentar und das folgende Problem: https://github.com/angular/angular-cli/issues/14594#issuecomment -497288501

Und auch dieses Problem: https://github.com/angular/angular/issues/30945

Leider konnte ich die Bibliothek nicht mit der im Kommentar (erster Link) beschriebenen Technik zum Laufen bringen: ./node_modules/.bin/ivy-ngcc -s ./dist .

Ich verstehe nicht wirklich, was los ist, aber vielleicht kann dir das helfen.

hmm, vielleicht würde es nach der Implementierung von # 1648 funktionieren. Mir sind keine pfadgebundenen Bibliotheken in unserer Bibliothek bekannt, aber wir verwenden ungewöhnliche Packungen

Irgendwelche Updates zu diesem Thema?

Das gleiche Problem hier bei Verwendung der neuesten eckigen Beta und Efeu

Nach dem Testen behebt # 1634 das Problem, sodass das Problem bei unserem veralteten Build-System liegt. Hoffentlich kann @SebastianM die PR überprüfen und zusammenführen

Gibt es hierzu Neuigkeiten?

Ja, ich versuche, den Autor von # 1634 dazu zu bringen, seine PR zu aktualisieren, damit wir sie zusammenführen können. Hoffentlich nächste Woche. Bisher kann ich keine Antwort erhalten, aber wenn das so weitergeht, klone ich seine PR und mache es selbst.

@terencehonles können Sie bitte https://github.com/SebastianM/angular-google-maps/pull/1634 aktualisieren?

Nicht bis npm veröffentlicht?

Noch nicht. Wir veröffentlichen nicht jedes Commit.

Können Sie dieses bitte veröffentlichen, da es als wichtig angesehen werden kann, da es Unterstützung für Angular 9 / IVY bietet

Noch nicht. Wir veröffentlichen nicht jedes Commit.

@ doom777 es könnte eine gute Idee sein, zu veröffentlichen, da es sich um ein großes Update handelt und wichtige Korrekturen einführt ...

Ich bin damit einverstanden, dass dies so schnell wie möglich veröffentlicht werden muss. Die Inkompatibilität dieser Bibliothek mit Efeu ist eines der wenigen Probleme, die uns daran hindern, Efeu in unserer mittelgroßen Web-App zu testen.

@ doom777 Gibt es Updates, wann diese oder die nächste Version veröffentlicht wird? Gibt es Schwierigkeiten beim Veröffentlichen auf npm? Das Paket enthält mehr als 65.000 Downloads. So viele Menschen können von der neuen Version profitieren.

Wenn ich hier https://docs.npmjs.com/creating-and-publishing-scoped-public-packages lese, verstehe ich, dass das Veröffentlichen ein schneller und einfacher Prozess sein sollte, oder fehlt mir etwas? :)

Vielen Dank

@ doom777 irgendwelche Updates?

Hallo allerseits. Ich weiß, dass einige von Ihnen darauf bedacht sind, dieses Update zu veröffentlichen, aber (1) ich bin nicht für die Veröffentlichung neuer agm-Versionen verantwortlich, (2) wir haben vor relativ kurzer Zeit eine veröffentlicht und (3) Ivy befindet sich noch in der Vorschau Für uns ist es wichtig, Support freizugeben. Es ist nicht PRIORITY 0 CRITICAL .
Ich habe @SebastianM über die Veröffentlichung einer neuen Version

Vielen Dank für das Update und die Informationen.

Ja, Ivy ist nur in der Vorschau, könnte aber schon heute vielen Entwicklern helfen.
Die jüngste Veröffentlichung sollte kein Problem sein, da npm die Veröffentlichung alle 24 Stunden erlaubt;)

Hoffe, @SebastianM kann bald über eine neue Version

Vielen Dank

@ doom777 Nicht PRIORITY 0 CRITIAL, aber sehr wichtig.

Angular ist im Begriff, Version 9.0.0 zu veröffentlichen, die standardmäßig Efeu aktiviert, und dieses Paket ist mit dieser Version unbrauchbar. Wenn der PR es behoben hat, kann ich wirklich nicht verstehen, warum ich keine neue Version veröffentliche.

Ich sehe auch keinen Grund dafür, dass sich dieses Paket noch in der Beta befindet. Hier funktioniert es einwandfrei, keine Fehler, keine Instabilität.

Die PR, die ich eingereicht habe (# 1634), befasste sich mit der AOT-Kompilierung, die es schon eine Weile gibt (Angular 4+?), Und dies sollte ein guter Grund sein, eine neue Beta-Version zu veröffentlichen.

In Bezug auf # 1647: Ivy erfordert zufällig AOT, weshalb es auf Ivy kaputt gehen würde, aber es könnte andere Dinge an der Bibliothek geben, die geändert werden müssen, um sie vollständig Ivy-kompatibel zu machen.

Bei der Arbeit beginne ich mit dem Erstellen unserer Anwendung mit Ivy zu experimentieren, aber es gibt andere Pakete, von denen wir abhängig sind, die Probleme zu haben scheinen, und ein Upgrade auf Ivy ist keine Kernanforderung unserer Anwendung. Da wir mehr Zeit zum Testen haben und möglicherweise weitere Zuordnungsfunktionen hinzufügen, kann ich prüfen, ob Änderungen erforderlich sind, aber ich kann keine Zusagen machen, wie viel Zeit ich für dieses Projekt zur Verfügung habe.

@ iget-master Ich würde auch nicht so weit gehen zu sagen, dass es keine Fehler und keine Instabilität gibt (nicht, dass ich auf welche gestoßen bin, aber es kann sehr gut Probleme geben und das Beibehalten des "Beta" -Tags erleichtert das Iterieren und Dinge ändern, die geändert werden müssen, bevor eine stabilere API verfügbar ist)

Wir erhalten Antworten von Mitwirkenden, da dies keine Priorität hat. Ich könnte das argumentieren und sagen, dass es etwas bedeutsam ist, dies zu veröffentlichen, damit AOT- und Ivy-Unterstützung behoben wird. AOT ist schon eine Weile her und in ein paar Monaten wird Angular 9 mit (erwartetem) stabilem Efeu da sein. Persönlich sehe ich keinen Grund zu behaupten, dass es genau 0 Priorität hat.

Zweitens, was ist das Problem, wenn Sie nur einen Befehl ausführen und ihn an npm freigeben?

Es wird von einem Mitwirkenden behauptet, dass es möglicherweise noch nicht stabil ist, in diesem Fall ist es sinnvoll, das Beta-Flag beizubehalten. ABER! Ist Beta nicht eine etwas volatile Sache? Was bedeutet, dass häufige Veröffentlichungen zu erwarten sind, aber wir sehen kaum eine Veröffentlichung pro Monat. Es könnte eine gute Idee sein, die aktuelle Version als stabil und die Version, die Ivy unter dem Beta-Flag behebt, zu veröffentlichen, wenn erhebliche Bedenken hinsichtlich der Instabilität bestehen.

Und denken Sie daran, dass ~ 60.000 Menschen pro Woche möglicherweise von einer neuen Version profitieren können;)

Vielen Dank

Ich denke darüber nach, dieses Repo genau zu kopieren und unter einem anderen Namen an npm zu senden, damit jeder, der diesen Thread sieht, es ausprobieren kann, bis er aufholt. Hat noch jemand daran gedacht?

Ich bin dabei.

Wir haben nichts dagegen, dass Sie unsere Bibliothek abspalten und bereitstellen. Deshalb ist sie Open Source. 😄
Ich versuche es rauszuholen, aber es ist nicht so einfach wie 'einen Befehl ausführen'. Ich gehe davon aus, dass Beta.8 weit vor Angular 9 veröffentlicht wird.

Wie kann ich helfen? Gibt es eine Funktion, die getestet oder entwickelt werden muss?

@mruknowme bitte tu das nicht.

@ doom777 begann genau das zu tun, bevor es mehr Traktion auf diesem Repo gab. Er hat viel getan, um den Ball in Bewegung zu bringen, und ich verstehe, dass Sie mit dem Tempo nicht zufrieden sind, aber es ist besser geworden und das Gabeln verwirrt nur die Leute, anstatt dass wir alle zusammenarbeiten, um zu versuchen, die Dinge schneller zu machen.

Update: Ich versuche dies zu veröffentlichen, leider ist Sebastian nicht erreichbar und nur er kann npm-Bereitstellungen durchführen.

Hallo,

habe diesen Thread versehentlich gesehen. @ Ephraim, wo hast du mir eine Nachricht geschickt?
Vielleicht sind meine Push-Einstellungen durcheinander. 😕 Ich kann eine neue Version pushen, wenn ich bin
Zuhause. Entschuldigung für die Verspätung!

Ephraim Khantsis [email protected] schrieb am Mo. 16. Sep. 2019 um
17.06 Uhr:

Update: Ich versuche dies freizugeben, leider ist es Sebastian
unerreichbar und nur er kann npm-Bereitstellungen durchführen.

- -
Sie erhalten dies, weil Sie erwähnt wurden.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/SebastianM/angular-google-maps/issues/1647?email_source=notifications&email_token=AACDGRABQG3CO4VBHKU3N23QJ6OHZA5CNFSM4HSA7KD2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6ZOZBA#issuecomment-531819652 ,
oder schalten Sie den Thread stumm
https://github.com/notifications/unsubscribe-auth/AACDGRFLFLAZMJKKVQZUM7DQJ6OHZANCNFSM4HSA7KDQ
.

Hey @SebastianM ,

Entschuldigung, ich kann mich nicht erinnern, dass ich dir eine Nachricht geschickt habe!
Warum sollte ich dir eine Nachricht senden?

Prost,
Ephraim

@SebastianM beziehen Sie sich auf @ doom777 Kommentar https://github.com/SebastianM/angular-google-maps/issues/1647#issuecomment -524882295?

Übrigens habe ich dir auch eine Nachricht auf Twitter geschickt: D.

Wir alle verstehen, dass Sie beschäftigt sind und schätzen Ihre Zeit und Mühe, um diese Plugins zu warten :)

Hallo! Ich bin froh, dass du da bist. Ich versuche immer, dich auf Twitter zu erreichen.

@SebastianM Wenn Sie bereits verfügbar sind, können Sie die Stackblitz-Vorlage aktualisieren, um die neueste AGM-Version zu verwenden?

Ja sicher

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

@SebastianM https://github.com/SebastianM Wenn Sie bereits verfügbar sind,
Können Sie die Stackblitz-Vorlage aktualisieren, um die neueste AGM-Version zu verwenden?

- -
Sie erhalten dies, weil Sie erwähnt wurden.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/SebastianM/angular-google-maps/issues/1647?email_source=notifications&email_token=AACDGRDKLMG7VFW7CP6KVYDQJ7E5PA5CNFSM4HSA7KD2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD62BQDQ#issuecomment-531896334 ,
oder schalten Sie den Thread stumm
https://github.com/notifications/unsubscribe-auth/AACDGRA3WT7CYHW3JSZEMC3QJ7E5PANCNFSM4HSA7KDQ
.

@SebastianM @agm/core 1.0.0 funktionierte gut mit Angular 9.0.0-next.6 aber mit Angular 9.0.0-next.7 dieser Fehler erneut ausgelöst https://github.com/angular/angular/issues/32506

Können Sie bitte einen Blick darauf werfen?

@agm/core 1.0.0 hat Bundles, in denen Dekorateure auf eine für mich seltsame Weise dargestellt werden. Ich schaue hinein.

Danke @JoostK , freue mich auf eine baldige Lösung :)

So konnte ich bestätigen, dass ngcc seit https://github.com/ng-packagr/ng-packagr/pull/1401 , veröffentlicht in ng-packagr 5.5.1, nicht in der Lage ist, mit der Art und Weise umzugehen, wie Dekorateure ausgegeben werden.

Dies ist jedoch immer noch überraschend, da die Datei yarn.lock in diesem Repo darauf hindeutet, dass ng-packagr 5.4.3 verwendet wird. @SebastianM Können Sie bestätigen, ob eine neuere Version von ng-packagr für die Veröffentlichung verwendet wurde, ohne die Datei yarn.lock zu aktualisieren?

Nein, es wurde mit 5.4.3 verwendet

Update: Der Versuch mit 5.5.1 hilft auch nicht

Hier ist eine PR, die sich mit der Art und Weise befasst, wie Dekorateure in @agm/core 1.0.0 präsent sind: https://github.com/angular/angular/pull/32901

@ doom777 Woher weißt du, warst du derjenige, der die Veröffentlichung veröffentlicht hat? Ich verstehe nicht ganz, wie die Version 1.0.0 von @agm/core sowohl ctorParameters als auch __decorate Aufrufe haben könnte, wenn sie mit etwas anderem als ng-packagr 5.5.1 erstellt wurde .

Das Plugin funktioniert perfekt mit Angular 9.0.0-next.9, danke @JoostK für den tollen Job :)

Ich bin endlich zu @ angle / google-maps gewechselt und habe bisher großartig funktioniert :)

ok viel Glück. Denken Sie daran, es hat viel weniger Funktionen

Nur um hinzuzufügen: Wir haben es sehr schwer, mit eckigem Efeu in 8.0 kompatibel zu sein, aber in 9.0 funktioniert es gut.

"@angular/core": "~9.1.0",
wenn ich einem Funktionsmodul forRoot hinzufüge und es in AppModule->Imports . Dieser Fehler tritt auf. Ich kann keine Lösung finden. Ich habe Angular CLI Today verwendet, um die neue App zu erstellen.

"@angular/core": "^9.1.6",
gleich...
"Wenn ich einem Funktionsmodul forRoot hinzufüge und es in AppModule-> Imports aufrufe. Dieser Fehler tritt auf. Ich kann keine Lösung finden. Ich habe Angular CLI Today verwendet, um die neue App zu erstellen."

Endlich das Problem für meinen Fall herausgefunden.

... im 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
      ]
    };
  }
}

... Gewechselt zu ...

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)
      ]
    };
  }
}
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen