Angular-google-maps: Non compatible avec Ivy (expérimental)

Créé le 1 juin 2019  ·  54Commentaires  ·  Source: SebastianM/angular-google-maps

Description du problème
Lors de la compilation avec Ivy, la compilation échoue avec l'erreur suivante:

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]

Étapes à suivre pour reproduire et une démo minimale du problème
Je n'ai pas pu créer un stackblitz ou un plunker pour cela car il a l'intention de montrer un échec du compilateur et je ne sais pas comment le démontrer.
Vous pouvez consulter https://github.com/paullessing/agm-ivy-demo et tenter de construire après avoir exécuté yarn install .

  1. Installez un nouveau projet d'Angular 8 en utilisant ng new
  2. Ajoutez @agm/core et configurez l'importation par défaut
    imports: [ BrowserModule, AgmCoreModule.forRoot({ apiKey: environment.mapsApiKey, }) ]
  3. Activez Ivy dans tsconfig.app.json :
    { ... "angularCompilerOptions": { "enableIvy": true } }
  4. Activez AOT dans angular.json pour contourner les " routes paresseuses introuvables ":
    { "projects": { "my-project": { "architect": { "build": { "options": { ... "aot": true, } } } } } }
  5. Exécutez ng serve

Comportement actuel
La compilation échoue avec une erreur:

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]

(La position 1 dans le tableau imports est le AgmCoreModule.forRoot() )

Comportement attendu / souhaité
Aucun échec du compilateur

version angular2 et 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

Les autres informations
La compilation fonctionne lorsque Ivy est désactivé.

Peut être lié à https://github.com/angular/angular/issues/28603 qui stipule que si le package.json ne contient pas typings propriété types ou typings , le module sera exclu de la compilation.

important bug build system

Commentaire le plus utile

Je suis d'accord que cela doit être publié dès que possible. L'incompatibilité de cette bibliothèque avec ivy est l'un des rares problèmes qui nous empêchent de tester ivy sur notre application Web de taille moyenne.

Tous les 54 commentaires

Impossible de reproduire. Se pourrait-il que importss ait deux «s»?

Impossible de reproduire. Se pourrait-il que importss ait deux «s»?

Je pense que c'est parce que c'est un tableau avec le nom imports donc le message d'erreur tente de le pluraliser.

Je viens de réessayer avec un tout nouveau projet, et cela échoue toujours (avec la version bêta 6). J'ai mis à jour les détails ci-dessus.

OK Essayez

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

ajouter AgmCoreModule.forRoot... aux importations

npm start

C'est littéralement exactement ce que j'ai fait dans le projet de démonstration que j'ai lié dans la description ci-dessus.

Même problème ici.

@paullessing @ ramses10 souhaitez-vous rejoindre Discord afin que nous puissions en discuter de manière plus interactive?

@ doom777 bien pour moi

reproduit avec build: prod
@ doom777 avez-vous essayé avec prod flag?

J'ai exactement le même problème. Mon application est similaire à l'exemple que Paul a partagé. J'obtiens le Value at position 1 in the NgModule.importss of AppModule is not a reference: [object Object] à la fois sur ng b --prod et ng b .

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

Salut, j'ai le même problème lorsque Ivy est activé:
ERREUR dans src / app / app.module.ts (37,12): erreur TS-991010: la valeur à la position 16 dans le NgModule.importss d'AppModule n'est pas une référence: [objet objet]

Fonctionne lorsque Ivy est désactivé

En regardant le problème, j'ai trouvé 2 problèmes liés dans les packages angular et angular-cli.

Il semble que l'erreur provienne d'une librairie qui est en dehors de node_module et rendue disponible en utilisant path-mapping .

Vérifiez le commentaire et le problème suivants: https://github.com/angular/angular-cli/issues/14594#issuecomment -497288501

Et aussi ce numéro: https://github.com/angular/angular/issues/30945

Malheureusement, je n'ai pas pu faire fonctionner la librairie avec la technique décrite dans le commentaire (premier lien) en utilisant: ./node_modules/.bin/ivy-ngcc -s ./dist .

Je ne comprends pas vraiment ce qui se passe, mais peut-être que cela peut vous aider.

hmm, peut-être qu'après avoir implémenté # 1648, cela fonctionnerait. Je ne connais aucune bibliothèque liée à des chemins dans notre bibliothèque, mais nous utilisons un emballage inhabituel

Des mises à jour sur ce problème?

même problème ici lors de l'utilisation de la dernière version bêta angulaire et de lierre

après le test, # 1634 le corrige donc le problème vient de notre système de construction obsolète. Espérons que @SebastianM pourra revoir et fusionner le PR

Une mise à jour pour ceci?

Oui, j'essaie de faire en sorte que l'auteur de # 1634 mette à jour son PR afin que nous puissions le fusionner. Espérons que la semaine prochaine. Jusqu'à présent, je ne peux pas obtenir de réponse, mais si cela continue, je clonerai son PR et le ferai moi-même.

@terencehonles pouvez-vous mettre à jour https://github.com/SebastianM/angular-google-maps/pull/1634 ?

Non publié à npm?

Pas encore. Nous ne publions pas tous les commit.

Pouvez-vous s'il vous plaît publier celui-ci, car il pourrait être considéré comme majeur car il offre un support pour Angular 9 / IVY

Pas encore. Nous ne publions pas tous les commit.

@ doom777 cela pourrait être une bonne idée de publier car il s'agit d'une mise à jour majeure et introduit un correctif majeur ...

Je suis d'accord que cela doit être publié dès que possible. L'incompatibilité de cette bibliothèque avec ivy est l'un des rares problèmes qui nous empêchent de tester ivy sur notre application Web de taille moyenne.

@ doom777 des mises à jour concernant la date de publication de cette version ou de la prochaine? Y a-t-il des difficultés à publier sur npm? Le package a 65k + weely téléchargements, c'est le nombre de personnes qui peuvent bénéficier de la nouvelle version.

En lisant ici https://docs.npmjs.com/creating-and-publishing-scoped-public-packages, je comprends que publier devrait être un processus rapide et facile, ou est-ce que je manque quelque chose? :)

Merci

@ doom777 des mises à jour?

Salut tout le monde. Je sais que certains d'entre vous sont impatients de publier ce correctif, mais (1) je ne suis pas en charge de publier de nouvelles versions d'agm, (2) nous en avons publié une assez récemment, et (3) Ivy est toujours en avant-première, alors même si c'est important pour nous de libérer le support, ce n'est pas la PRIORITÉ 0 CRITIQUE .
J'ai envoyé un message à

Merci pour la mise à jour et les informations.

Oui, Ivy n'est qu'en avant-première mais pourrait encore aider de nombreux développeurs dès aujourd'hui.
La version récente ne devrait pas être un problème puisque npm permet de publier toutes les 24 heures;)

Hope @SebastianM pourra bientôt envisager une nouvelle version :)

Merci

@ doom777 Pas

Angular est sur le point de publier la v9.0.0 qui activera ivy par défaut, et ce paquet sera inutile avec cette version. Si le PR l'a corrigé, je ne vois vraiment pas pourquoi ne pas publier une nouvelle version.

De plus, je ne vois aucune raison pour que ce package soit toujours en version bêta. Cela fonctionne très bien ici, pas de bugs, pas d'instabilité.

Le PR que j'ai soumis (# 1634) était de traiter de la compilation AOT qui existe depuis un certain temps (Angular 4+?), Et cela devrait être une bonne raison pour publier une nouvelle version bêta.

Concernant # 1647: Ivy nécessite qu'il se trouve qu'il nécessite AOT, c'est pourquoi il se briserait sur Ivy, mais il pourrait y avoir d'autres choses à propos de la bibliothèque qui doivent changer pour la rendre complètement compatible avec Ivy.

Au travail, je commence à expérimenter la création de notre application avec Ivy, mais il existe d'autres packages dont nous dépendons et qui semblent poser des problèmes, et la mise à niveau vers Ivy n'est pas une exigence fondamentale de notre application. Comme nous avons plus de temps pour tester et que nous ajoutons potentiellement plus de fonctionnalités de cartographie, je peux envisager de contribuer aux changements que je juge nécessaires, mais je ne peux pas prendre d'engagements sur le temps dont je dispose pour aider à ce projet.

@ iget-master Je n'irais pas non plus jusqu'à dire qu'il n'y a pas de bugs et pas d'instabilité (pas que j'en ai rencontré, mais il peut très bien y avoir des problèmes et garder la balise "beta" facilite l'itération et changer les choses qui doivent être changées avant d'avoir une API plus stable)

Nous recevons des réponses des contributeurs comme si ce n'était pas une priorité. Je pourrais argumenter cela et dire que la publication de ceci pour qu'elle corrige le support d'AOT et d'Ivy est quelque peu importante. AOT existe depuis un certain temps et dans quelques mois, Angular 9 sera disponible avec Ivy stable (attendu). Personnellement, je ne vois aucune raison de prétendre qu'il s'agit exactement de 0 priorité.

Deuxièmement, quel est le problème lorsque vous exécutez une commande et que vous la libérez vers npm?

Un contributeur prétend qu'il n'est peut-être pas encore stable, très bien, auquel cas il est logique de conserver le drapeau bêta. MAIS! La bêta n'est-elle pas supposée être quelque peu volatile? Ce qui signifie que des versions fréquentes sont à prévoir, mais ce que nous voyons est à peine une version par mois. Ce pourrait être une bonne idée de publier la version actuelle comme stable et celle qui corrige Ivy sous le drapeau bêta s'il y a des inquiétudes importantes concernant son instabilité.

Et rappelez-vous que ~ 60 000 personnes par semaine peuvent potentiellement bénéficier d'une nouvelle version;)

Merci

Je pense copier exactement ce repo et le publier sur npm sous un nom différent, afin que tous ceux qui regardent ce fil puissent l'essayer jusqu'à ce qu'ils rattrapent leur retard. Quelqu'un d'autre pense-t-il à faire ça?

J'en suis.

Nous n'avons rien contre le fait de bifurquer et de déployer notre bibliothèque, c'est pourquoi c'est open source. 😄
J'essaie de le sortir, mais ce n'est pas aussi simple que de «lancer une commande». Je m'attends à ce que la version bêta.8 soit publiée bien avant Angular 9.

Comment puis-je aider? Une fonctionnalité à tester ou à développer?

@mruknowme s'il vous plaît ne faites pas ça.

@ doom777 commençait à faire exactement cela avant qu'il n'y ait plus de traction sur ce repo. Il a fait beaucoup pour aider à faire bouger le ballon et je comprends que vous n'êtes pas satisfait du rythme, mais il s'est amélioré et la fourche ne fait que confondre les gens plutôt que de nous faire travailler tous ensemble pour essayer de rendre les choses plus rapides.

Mise à jour: j'essaye de faire sortir ceci, malheureusement Sebastian est inaccessible et lui seul peut faire des déploiements npm.

Hey,

vu ce fil accidentellement. @Ephraim
Peut-être que mes paramètres push sont erronés Je peux pousser une nouvelle version quand je suis
domicile. Désolé pour le retard!

Ephraim Khantsis [email protected] schrieb am Lu 16. sept. 2019 um
17h06:

Mise à jour: j'essaye de faire sortir ceci, malheureusement Sebastian est
inaccessible et lui seul peut faire des déploiements npm.

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/SebastianM/angular-google-maps/issues/1647?email_source=notifications&email_token=AACDGRABQG3CO4VBHKU3N23QJ6OHZA5CNFSM4HSA7KD2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6ZOZBA#issuecomment-531819652 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AACDGRFLFLAZMJKKVQZUM7DQJ6OHZANCNFSM4HSA7KDQ
.

Salut @SebastianM ,

désolé, je ne me souviens pas que je t'ai envoyé un message!
Pourquoi devrais-je vous envoyer un message?

Acclamations,
Éphraïm

@SebastianM faites -vous référence au commentaire @ doom777 https://github.com/SebastianM/angular-google-maps/issues/1647#issuecomment -524882295?

BTW, je vous ai également laissé un message sur Twitter: D

Nous comprenons tous que vous êtes occupé et apprécions votre temps et vos efforts pour maintenir ces plugins :)

Hey! Content que tu sois là. J'essaie toujours de vous joindre sur Twitter.

@SebastianM Si vous êtes déjà disponible, pouvez-vous mettre à jour le modèle stackblitz pour utiliser la dernière version d'AGM?

Oui bien sûr

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

@SebastianM https://github.com/SebastianM Si vous êtes déjà disponible,
pouvez-vous mettre à jour le modèle stackblitz pour utiliser la dernière version d'AGM?

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/SebastianM/angular-google-maps/issues/1647?email_source=notifications&email_token=AACDGRDKLMG7VFW7CP6KVYDQJ7E5PA5CNFSM4HSA7KD2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD62BQDQ#issuecomment-531896334 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AACDGRA3WT7CYHW3JSZEMC3QJ7E5PANCNFSM4HSA7KDQ
.

@SebastianM @agm/core 1.0.0 fonctionnait bien avec Angular 9.0.0-next.6 mais avec Angular 9.0.0-next.7 il a recommencé à générer cette erreur https://github.com/angular/angular/issues/32506

Pouvez-vous jeter un oeil?

J'ai étudié cela tout à l'heure, @agm/core 1.0.0 a des bundles qui ont des décorateurs représentés d'une manière qui m'est étrange. J'examine ça.

Merci @JoostK , dans l'attente d'une solution bientôt :)

J'ai donc pu confirmer que ngcc est incapable de gérer la façon dont les décorateurs sont émis depuis https://github.com/ng-packagr/ng-packagr/pull/1401 , publié dans ng-packagr 5.5.1.

Ceci est cependant toujours surprenant, car le fichier yarn.lock dans ce dépôt suggère que ng-packagr 5.4.3 est utilisé. @SebastianM pourriez-vous confirmer si une version plus récente de ng-packagr était utilisée pour la publication, sans mettre à jour le fichier yarn.lock ?

Non, il a été utilisé avec 5.4.3

Mise à jour: essayer avec 5.5.1 n'aide pas non plus

Voici un PR qui traite de la façon dont les décorateurs sont présents dans @agm/core 1.0.0: https://github.com/angular/angular/pull/32901

@ doom777 comment savez-vous, êtes-vous celui qui a publié le communiqué? Je ne comprends pas très bien comment la version 1.0.0 de @agm/core pourrait avoir à la fois des appels ctorParameters et __decorate si elle était construite avec autre chose que ng-packagr 5.5.1 .

Le plugin fonctionne parfaitement avec Angular 9.0.0-next.9, merci @JoostK pour le travail génial :)

Je suis finalement passé à @ angular / google-maps, fonctionnant très bien jusqu'à présent :)

d'accord bonne chance. Gardez à l'esprit qu'il a beaucoup moins de fonctionnalités

Juste pour ajouter: nous avons du mal à être compatibles avec le lierre angulaire dans la version 8.0, mais dans la version 9.0, cela fonctionne très bien.

"@angular/core": "~9.1.0",
quand j'ajoute forRoot à un module de fonctionnalités et que je l'appelle dans AppModule->Imports . Cette erreur se produit. Je ne trouve aucune solution. J'ai utilisé Angular CLI Today pour créer la nouvelle application.

"@angular/core": "^9.1.6",
même...
"lorsque j'ajoute forRoot à un module de fonctionnalités et que je l'appelle dans AppModule-> Imports. Cette erreur se produit. Je ne trouve aucune solution. J'ai utilisé Angular CLI Today pour créer la nouvelle application."

Enfin découvert le problème pour mon cas.

... dans le module ...

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

... Changé en ...

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)
      ]
    };
  }
}
Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

shedar picture shedar  ·  4Commentaires

Subhojit1992 picture Subhojit1992  ·  3Commentaires

n1t3w0lf picture n1t3w0lf  ·  3Commentaires

nthonymiller picture nthonymiller  ·  4Commentaires

gnujeremie picture gnujeremie  ·  3Commentaires