Angular-google-maps: No es compatible con Ivy (experimental)

Creado en 1 jun. 2019  ·  54Comentarios  ·  Fuente: SebastianM/angular-google-maps

Descripcion del problema
Al compilar con Ivy, la compilación falla con el siguiente error:

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]

Pasos para reproducir y una demostración mínima del problema.
No pude crear un stackblitz o plunker para esto, ya que tiene la intención de mostrar una falla del compilador y no sé cómo demostrarlo.
Puede consultar https://github.com/paullessing/agm-ivy-demo e intentar compilar después de ejecutar yarn install .

  1. Instale un nuevo proyecto de Angular 8 usando ng new
  2. Agregue @agm/core y configure la importación predeterminada
    imports: [ BrowserModule, AgmCoreModule.forRoot({ apiKey: environment.mapsApiKey, }) ]
  3. Habilitar Ivy en tsconfig.app.json :
    { ... "angularCompilerOptions": { "enableIvy": true } }
  4. Habilite AOT en angular.json para evitar " rutas perezosas no encontradas ":
    { "projects": { "my-project": { "architect": { "build": { "options": { ... "aot": true, } } } } } }
  5. Ejecutar ng serve

Comportamiento actual
La compilación falla con error:

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 posición 1 en la matriz imports es AgmCoreModule.forRoot() )

Comportamiento esperado / deseado
Sin fallas del compilador

versión angular2 y 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

Otra información
Compilar funciona cuando Ivy está deshabilitado.

Puede estar relacionado con https://github.com/angular/angular/issues/28603 que establece que si el package.json no contiene una propiedad types o typings , el El módulo se excluirá de la compilación.

important bug build system

Comentario más útil

Estoy de acuerdo en que esto debe publicarse lo antes posible. La incompatibilidad de esta biblioteca con Ivy es uno de los pocos problemas que nos impiden probar Ivy en nuestra aplicación web de escala media.

Todos 54 comentarios

Incapaces de reproducirse. ¿Podría ser que importss tenga dos 's'?

Incapaces de reproducirse. ¿Podría ser que importss tiene dos 's'?

Creo que eso se debe a que es una matriz con el nombre imports por lo que el mensaje de error intenta pluralizarlo.

Lo intenté de nuevo con un proyecto nuevo y aún falla (con la versión beta 6). Actualicé los detalles anteriores.

Vale, inténtalo

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

agregue AgmCoreModule.forRoot... a las importaciones

npm start

Eso es literalmente exactamente lo que hice en el proyecto de demostración que vinculé en la descripción anterior.

El mismo problema aqui.

@paullessing @ ramses10 ¿te gustaría unirte a Discord para que podamos discutir esto de manera más interactiva?

@ doom777 está bien para mí

reproducido con build: prod
@ doom777 ¿has probado con prod flag?

Tengo exactamente el mismo problema. Mi aplicación es similar al ejemplo que Paul ha compartido. Obtengo el Value at position 1 in the NgModule.importss of AppModule is not a reference: [object Object] tanto en ng b --prod como en ng b .

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

Hola, tengo el mismo problema cuando Ivy está habilitado:
ERROR en src / app / app.module.ts (37,12): error TS-991010: El valor en la posición 16 en NgModule.importss de AppModule no es una referencia: [object Object]

Funciona cuando Ivy está discapacitado

Al observar el problema, encontré 2 problemas relacionados en el paquete angular y angular-cli.

Parece que el error proviene de una biblioteca que está fuera de node_module y está disponible usando path-mapping .

Consulte el siguiente comentario y problema: https://github.com/angular/angular-cli/issues/14594#issuecomment -497288501

Y también este problema: https://github.com/angular/angular/issues/30945

Desafortunadamente, no pude hacer que la biblioteca funcione con la técnica descrita en el comentario (primer enlace) usando: ./node_modules/.bin/ivy-ngcc -s ./dist .

Realmente no entiendo lo que está pasando, pero tal vez eso pueda ayudarte.

hmm, quizás después de implementar # 1648 funcionaría. No tengo conocimiento de ninguna biblioteca vinculada a la ruta en nuestra biblioteca, pero usamos un empaque inusual

¿Alguna actualización sobre este tema?

mismo problema aquí cuando se usa la última versión beta angular y ivy

después de la prueba, # 1634 lo soluciona, por lo que el problema está en nuestro sistema de compilación obsoleto. Con suerte, @SebastianM puede revisar y fusionar las relaciones públicas

¿Algún avance en esto?

Sí, estoy tratando de que el autor del número 1634 actualice su PR para que podamos fusionarlo. Ojalá la semana que viene. Hasta ahora, no puedo obtener una respuesta, pero si eso continúa, clonaré su PR y lo haré yo mismo.

@terencehonles , ¿puedes actualizar https://github.com/SebastianM/angular-google-maps/pull/1634 ?

¿No está publicado en npm?

Aún no. No publicamos todas las confirmaciones.

¿Puede publicar este, ya que podría considerarse uno importante, ya que ofrece soporte para Angular 9 / IVY?

Aún no. No publicamos todas las confirmaciones.

@ doom777 podría ser una buena idea publicar, ya que es una actualización importante e introduce una solución importante ...

Estoy de acuerdo en que esto debe publicarse lo antes posible. La incompatibilidad de esta biblioteca con Ivy es uno de los pocos problemas que nos impiden probar Ivy en nuestra aplicación web de escala media.

@ doom777 ¿ alguna actualización con respecto a cuándo se publicará esta o la próxima versión? ¿Hay dificultades para publicar en npm? El paquete tiene más de 65.000 descargas, así es como muchas personas pueden beneficiarse de la nueva versión.

De leer aquí https://docs.npmjs.com/creating-and-publishing-scoped-public-packages, entiendo que la publicación debe ser un proceso rápido y fácil, ¿o me estoy perdiendo algo? :)

Gracias

@ doom777 ¿ alguna actualización?

Hola a todos. Sé que algunos de ustedes están ansiosos por que se publique esta solución, pero (1) no estoy a cargo de lanzar nuevas versiones de agm, (2) lanzamos una recientemente y (3) Ivy todavía está en vista previa, así que mientras está Es importante para nosotros liberar soporte, no es PRIORIDAD 0 CRÍTICO .
Le envié un mensaje a

Gracias por la actualización y la información.

Sí, Ivy solo está en versión preliminar, pero aún hoy podría ayudar a muchos desarrolladores.
La versión reciente no debería ser un problema, ya que npm permite la publicación cada 24 horas;)

Espero que @SebastianM pueda considerar un nuevo lanzamiento pronto :)

Gracias

@ doom777 No es PRIORIDAD 0 CRÍTICA, pero es muy importante.

Angular está a punto de lanzar v9.0.0 que habilitará ivy por defecto, y este paquete será inútil con esta versión. Si el RP lo arregló, realmente no puedo ver por qué no lanzar una nueva versión.

Además, no veo ninguna razón para que este paquete todavía esté en versión beta. Aquí funciona bien, sin errores, sin inestabilidad.

El PR que envié (# 1634) fue para abordar la compilación AOT que ha existido por un tiempo (¿Angular 4+?), Y esta debería ser una buena razón para lanzar una nueva versión beta.

Con respecto al # 1647: Ivy requiere requiere AOT, por lo que se rompería en Ivy, pero puede haber otras cosas sobre la biblioteca que deben cambiarse para que sea completamente compatible con Ivy.

En el trabajo, estoy empezando a experimentar con la construcción de nuestra aplicación con Ivy, pero hay otros paquetes de los que dependemos que parecen tener problemas, y la actualización a Ivy no es un requisito fundamental de nuestra aplicación. Como tenemos más tiempo para probar y potencialmente agregamos más funciones de mapeo, puedo considerar contribuir con cualquier cambio que considere necesario, pero no puedo comprometerme con cuánto tiempo tengo para ayudar con este proyecto.

@ iget-master Tampoco iría tan lejos como para decir que no hay errores ni inestabilidad (no es que haya encontrado ninguno, pero es muy posible que haya problemas y mantener la etiqueta "beta" facilita la iteración y cambiar las cosas que deben cambiarse antes de tener una API más estable)

Recibimos respuestas de los colaboradores como si no fuera una prioridad. Podría argumentar eso y decir que lanzar esto para que solucione el soporte de AOT e Ivy es algo significativo. AOT ha existido por un tiempo y en un par de meses Angular 9 estará disponible con Ivy estable (esperado). Personalmente, no veo ninguna razón para afirmar que es exactamente una prioridad 0.

En segundo lugar, ¿cuál es el problema con solo ejecutar un comando y liberarlo en npm?

Un colaborador afirma que es posible que aún no sea estable, está bien, en cuyo caso mantener la bandera beta tiene sentido. ¡PERO! ¿No se supone que beta es algo volátil? Lo que significa que se esperan lanzamientos frecuentes, pero lo que vemos es apenas un lanzamiento al mes. Podría ser una buena idea lanzar la versión actual como estable y la que está reparando a Ivy bajo la bandera beta si hay preocupaciones significativas sobre su inestabilidad.

Y recuerde que ~ 60.000 personas por semana pueden beneficiarse potencialmente de una nueva versión;)

Gracias

Estoy pensando en copiar este repositorio exactamente y publicarlo en npm con un nombre diferente, para que todos los que vean este hilo puedan probarlo hasta que se pongan al día. ¿Alguien más está pensando en hacer esto?

Estoy dentro.

No tenemos nada en contra de que bifurque e implemente nuestra biblioteca, por eso es de código abierto. 😄
Estoy tratando de sacarlo, pero no es tan fácil como 'ejecutar un comando'. Espero que beta.8 se lance mucho antes que Angular 9.

¿Cómo puedo ayudar? ¿Alguna característica que necesite prueba o desarrollo?

@mruknowme, por favor, no hagas eso.

@ doom777 estaba comenzando a hacer precisamente eso antes de que hubiera más tracción en este repositorio. Ha hecho mucho para ayudar a que la pelota se mueva y entiendo que no estás contento con el ritmo, pero ha mejorado y la bifurcación solo confunde a la gente en lugar de hacer que todos trabajemos juntos para tratar de hacer las cosas más rápido.

Actualización: estoy tratando de publicar esto, desafortunadamente Sebastian no está disponible y solo él puede hacer implementaciones de npm.

Oye,

vi este hilo accidentalmente. @Ephraim ¿a dónde me enviaste un mensaje?
Tal vez mi configuración de inserción esté estropeada 😕 Puedo publicar una nueva versión cuando esté
casa. ¡Pido disculpas por la demora!

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

Actualización: estoy tratando de publicar esto, desafortunadamente Sebastian es
inalcanzable y solo él puede realizar implementaciones de npm.

-
Recibes esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/SebastianM/angular-google-maps/issues/1647?email_source=notifications&email_token=AACDGRABQG3CO4VBHKU3N23QJ6OHZA5CNFSM4HSA7KD2YY3PNVWWK3TUL52GHD2YY3PNVWWK3TUL52GHS4DFMVLOXWWK3TUL52HS4DFMVREX5HBDZHD2ZDMVREX
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AACDGRFLFLAZMJKKVQZUM7DQJ6OHZANCNFSM4HSA7KDQ
.

Hola @SebastianM ,

lo siento, no recuerdo que te envié un mensaje.
¿Por qué debería enviarte un mensaje?

Salud,
Efraín

@SebastianM ¿te refieres al comentario de @ doom777 https://github.com/SebastianM/angular-google-maps/issues/1647#issuecomment -524882295?

Por cierto, también te dejé un mensaje en Twitter: D

Todos entendemos que está ocupado y apreciamos su tiempo y esfuerzos para mantener estos complementos :)

¡Oye! Me alegro de que estés cerca. Siempre trato de comunicarme contigo en Twitter.

@SebastianM Si ya está disponible, ¿puede actualizar la plantilla de stackblitz para usar la última versión de AGM?

Si seguro

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

@SebastianM https://github.com/SebastianM Si ya estás disponible,
¿Puede actualizar la plantilla stackblitz para utilizar la última versión de AGM?

-
Recibes esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/SebastianM/angular-google-maps/issues/1647?email_source=notifications&email_token=AACDGRDKLMG7VFW7CP6KVYDQJ7E5PA5CNFSM4HSA7KD2YY3PNVWWK3TUL52HSG43LNFVREB53 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AACDGRA3WT7CYHW3JSZEMC3QJ7E5PANCNFSM4HSA7KDQ
.

@SebastianM @agm/core 1.0.0 estaba funcionando bien con Angular 9.0.0-next.6 pero con Angular 9.0.0-next.7 comenzó a lanzar este error nuevamente https://github.com/angular/angular/issues/32506

¿Puedes echar un vistazo?

Analizado esto hace un momento, @agm/core 1.0.0 tiene paquetes que tienen decoradores representados de una manera que me resulta extraña. Lo estoy investigando.

Gracias @JoostK , espero una solución pronto :)

Así que pude confirmar que ngcc no puede lidiar con la forma en que se emiten los decoradores desde https://github.com/ng-packagr/ng-packagr/pull/1401 , lanzado en ng-packagr 5.5.1.

Sin embargo, esto sigue siendo sorprendente, ya que el archivo yarn.lock en este repositorio sugiere que se está utilizando ng-packagr 5.4.3. @SebastianM, ¿ podría confirmar si se estaba utilizando una versión más reciente de ng-packagr para la publicación, sin actualizar el archivo yarn.lock ?

No, se usó con 5.4.3

Actualización: probar con 5.5.1 tampoco ayuda

Aquí hay un PR que trata sobre la forma en que los decoradores están presentes en @agm/core 1.0.0: https://github.com/angular/angular/pull/32901

@ doom777 cómo sabes, ¿fuiste tú quien publicó el comunicado? No entiendo muy bien cómo la versión 1.0.0 de @agm/core podría tener llamadas ctorParameters y __decorate si se construyó con algo que no sea ng-packagr 5.5.1 .

El complemento funciona perfectamente con Angular 9.0.0-next.9, gracias @JoostK por el increíble trabajo :)

Finalmente cambié a @ angular / google-maps, funcionando muy bien hasta ahora :)

OK buena suerte. Tenga en cuenta que tiene muchas menos funciones

Solo para agregar: nos está costando mucho ser compatibles con angular ivy en 8.0, pero en 9.0 funciona bien.

"@angular/core": "~9.1.0",
cuando agrego forRoot a un módulo de funciones y lo llamo AppModule->Imports . Este error ocurre. No puedo encontrar ninguna solución. Usé Angular CLI Today para crear la nueva aplicación.

"@angular/core": "^9.1.6",
mismo...
"cuando agrego forRoot a un módulo de funciones y lo llamo en AppModule-> Imports. Se produce este error. No puedo encontrar ninguna solución. Usé Angular CLI Today para crear la nueva aplicación".

Finalmente descubrí el problema de mi caso.

... en módulo ...

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

... Cambiado a ...

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)
      ]
    };
  }
}
¿Fue útil esta página
0 / 5 - 0 calificaciones