Angular-google-maps: Não compatível com Ivy (experimental)

Criado em 1 jun. 2019  ·  54Comentários  ·  Fonte: SebastianM/angular-google-maps

Descrição do problema
Ao compilar com Ivy, a compilação falha com o seguinte erro:

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]

Etapas para reproduzir e uma demonstração mínima do problema
Não consegui criar um stackblitz ou plunker para isso, pois tem a intenção de mostrar uma falha do compilador e não sei como demonstrar isso.
Você pode verificar https://github.com/paullessing/agm-ivy-demo e tentar construir depois de executar yarn install .

  1. Instale o novo projeto do Angular 8 usando ng new
  2. Adicione @agm/core e configure a importação padrão
    imports: [ BrowserModule, AgmCoreModule.forRoot({ apiKey: environment.mapsApiKey, }) ]
  3. Habilite Ivy em tsconfig.app.json :
    { ... "angularCompilerOptions": { "enableIvy": true } }
  4. Habilite AOT em angular.json para contornar " rotas preguiçosas não encontradas ":
    { "projects": { "my-project": { "architect": { "build": { "options": { ... "aot": true, } } } } } }
  5. Execute ng serve

Comportamento atual
A compilação falha com erro:

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]

(A posição 1 na matriz imports é AgmCoreModule.forRoot() )

Comportamento esperado / desejado
Sem falhas de compilador

versão angular2 e 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

Outra informação
O Compile funciona quando o Ivy está desativado.

Pode estar relacionado a https://github.com/angular/angular/issues/28603 que afirma que se package.json não contiver uma propriedade types ou typings , o módulo será excluído da compilação.

important bug build system

Comentários muito úteis

Eu concordo que isso deve ser lançado o mais rápido possível. A incompatibilidade desta biblioteca com o ivy é um dos poucos problemas que nos impedem de testar o ivy em nosso aplicativo da web de médio porte.

Todos 54 comentários

Incapaz de reproduzir. Será que importss tem dois 's'?

Incapaz de reproduzir. Será que importss tem dois 's'?

Acho que é porque é um array com o nome imports então a mensagem de erro está tentando pluralizá-lo.

Acabei de tentar novamente com um projeto totalmente novo e ainda falhou (com a versão beta 6). Eu atualizei os detalhes acima.

OK tente

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

adicionar AgmCoreModule.forRoot... às importações

npm start

Isso é literalmente exatamente o que eu fiz no projeto de demonstração que vinculei na descrição acima.

Mesmo problema aqui.

@paullessing @ ramses10 você gostaria de ingressar no Discord para que possamos discutir isso de forma mais interativa?

@ doom777 bom para mim

reproduzido com build: prod
@ doom777 você já tentou com o prod flag?

Estou tendo exatamente o mesmo problema. Meu aplicativo é semelhante ao exemplo que Paul compartilhou. Eu recebo Value at position 1 in the NgModule.importss of AppModule is not a reference: [object Object] em ng b --prod e ng b .

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

Olá, tenho o mesmo problema quando o Ivy está ativado:
ERROR in src / app / app.module.ts (37,12): erro TS-991010: O valor na posição 16 em NgModule.importss de AppModule não é uma referência: [Object Object]

Funciona quando Ivy está desativada

Olhando para o problema, encontrei 2 questões relacionadas no pacote angular e angular-cli.

Parece que o erro vem de uma biblioteca que está fora de node_module e disponibilizada usando path-mapping .

Verifique o seguinte comentário e problema: https://github.com/angular/angular-cli/issues/14594#issuecomment -497288501

E também este problema: https://github.com/angular/angular/issues/30945

Infelizmente não consegui fazer a librairy funcionar com a técnica descrita no comentário (primeiro link) usando: ./node_modules/.bin/ivy-ngcc -s ./dist .

Eu realmente não entendo o que está acontecendo, mas talvez isso possa ajudá-lo.

hmm, talvez depois de implementar o # 1648 ele funcionasse. Não estou ciente de nenhuma biblioteca vinculada a caminhos em nossa biblioteca, mas usamos empacotamento incomum

Alguma atualização para esse problema?

mesmo problema aqui ao usar o beta angular e ivy mais recentes

após o teste, # 1634 corrige, então o problema é com nosso sistema de compilação obsoleto. Esperançosamente @SebastianM pode revisar e mesclar o PR

alguma atualização disso?

Sim, estou tentando fazer com que o autor de # 1634 atualize seu PR para que possamos mesclá-lo. Espero que na próxima semana. Até agora, não consegui uma resposta, mas se continuar, vou clonar seu PR e fazer eu mesmo.

@terencehonles, você pode atualizar https://github.com/SebastianM/angular-google-maps/pull/1634 ?

Não publicado no npm?

Ainda não. Não publicamos todos os commits.

Você pode publicar este, já que pode ser considerado o principal, pois oferece suporte para Angular 9 / IVY

Ainda não. Não publicamos todos os commits.

@ doom777 pode ser uma boa ideia publicar, pois é uma atualização importante e apresenta uma grande correção ...

Eu concordo que isso deve ser lançado o mais rápido possível. A incompatibilidade desta biblioteca com o ivy é um dos poucos problemas que nos impedem de testar o ivy em nosso aplicativo da web de médio porte.

@ doom777 alguma atualização em relação a quando esta ou a próxima versão será publicada? Existe alguma dificuldade em publicar no npm? O pacote tem mais de 65k de downloads, é assim que muitas pessoas podem se beneficiar com a nova versão.

Ao ler aqui https://docs.npmjs.com/creating-and-publishing-scoped-public-packages, entendo que publicar deve ser um processo rápido e fácil ou estou perdendo alguma coisa? :)

Obrigado

@ doom777 alguma atualização?

Ei, pessoal. Sei que alguns de vocês estão ansiosos para que essa correção seja lançada, mas (1) não sou responsável pelo lançamento de novas versões do agm, (2) lançamos uma bem recentemente e (3) Ivy ainda está em pré-visualização, então, enquanto estiver importante para nós liberar suporte, não é PRIORIDADE 0 CRÍTICA .
Mandei uma mensagem para

Obrigado pela atualização e informação.

Sim, Ivy está apenas em visualização, mas ainda pode ajudar muitos desenvolvedores hoje.
O lançamento recente não deve ser um problema, pois o npm permite o lançamento a cada 24 horas;)

Espero que @SebastianM possa considerar um novo lançamento em breve :)

Obrigado

@ doom777 Não PRIORITY 0 CRITIAL, mas muito importante.

O Angular está prestes a lançar a v9.0.0 que habilitará o ivy por padrão, e este pacote será inútil com esta versão. Se o PR consertou, eu realmente não consigo ver por que não lançar uma nova versão.

Além disso, não vejo razão para este pacote ainda estar em beta. Funciona bem aqui, sem bugs, sem instabilidade.

O PR que enviei (# 1634) foi para abordar a compilação AOT que já existe há algum tempo (Angular 4+?), E este deve ser um bom motivo para lançar um novo lançamento beta.

Em relação ao # 1647: Ivy requer passa a exigir AOT, que é o motivo pelo qual quebraria no Ivy, mas pode haver outras coisas sobre a biblioteca que precisam ser alteradas para torná-la totalmente compatível com Ivy.

No trabalho, estou começando a experimentar construir nosso aplicativo com o Ivy, mas existem outros pacotes dos quais dependemos que parecem ter problemas, e atualizar para o Ivy não é um requisito básico do nosso aplicativo. Como temos mais tempo para testar e potencialmente adicionamos mais recursos de mapeamento, posso contribuir com as mudanças que considero necessárias, mas não posso me comprometer com quanto tempo tenho para ajudar neste projeto.

@ iget-master Eu também não iria tão longe a ponto de dizer que não há bugs e nem instabilidade (não que eu tenha encontrado algum, mas pode haver problemas e manter a tag "beta" torna mais fácil iterar e mudar coisas que precisam ser mudadas antes de ter uma API mais estável)

Recebemos respostas de contribuidores como se não fosse uma prioridade. Eu poderia argumentar isso e dizer que liberar isso para corrigir o suporte AOT e Ivy é um tanto significativo. O AOT já existe há um tempo e em alguns meses o Angular 9 estará disponível com Ivy (esperado) estável. Pessoalmente, não vejo razão para afirmar que é exatamente 0 prioridade.

Em segundo lugar, qual é o problema em apenas executar um comando e liberá-lo para o npm?

Um contribuidor alega que ainda não está estável, ótimo, caso em que manter o sinalizador beta faz sentido. MAS! Não é o beta suposto ser algo volátil? O que significa que lançamentos frequentes são esperados, mas o que vemos é apenas um lançamento por mês. Pode ser uma boa ideia lançar a versão atual como estável e aquela que corrige o Ivy sob a bandeira beta se houver preocupações significativas sobre sua instabilidade.

E lembre-se de ~ 60 mil pessoas por semana podem se beneficiar potencialmente de uma nova versão;)

Obrigado

Estou pensando em copiar este repositório exatamente e liberá-lo para npm com um nome diferente, para que todos que assistirem a este tópico possam experimentá-lo até que se atualizem. Alguém mais está pensando em fazer isso?

Estou dentro.

Não temos nada contra você bifurcar e implantar nossa biblioteca, é por isso que é open source. 😄
Estou tentando fazer isso, mas não é tão fácil quanto 'executar um comando'. Espero que o beta.8 seja lançado bem antes do Angular 9.

Como posso ajudar? Qualquer recurso que precisa de teste ou desenvolvimento?

@mruknowme, por favor, não faça isso.

@ doom777 estava começando a fazer exatamente isso antes que houvesse mais tração neste repo. Ele tem feito muito para ajudar a colocar a bola em movimento e eu entendo que você não esteja feliz com o ritmo, mas _estou_ melhor e a bifurcação só confunde as pessoas ao invés de ter todos nós trabalhando juntos para tentar fazer as coisas mais rápido.

Atualização: Estou tentando liberar isso, infelizmente Sebastian está inacessível e só ele pode fazer implantações npm.

Ei,

vi este tópico acidentalmente. @Ephraim para onde você me mandou uma mensagem?
Talvez minhas configurações de envio estejam bagunçadas 😕 posso enviar uma nova versão quando estiver
casa. Desculpe pelo atraso!

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

Atualização: estou tentando fazer com que isso seja lançado, infelizmente Sebastian está
inacessível e só ele pode fazer implantações npm.

-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/SebastianM/angular-google-maps/issues/1647?email_source=notifications&email_token=AACDGRABQG3CO4VBHKU3N23QJ6OHZA5CNFSM4HSA7KD2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6ZOZBA#issuecomment-531819652 ,
ou silenciar o tópico
https://github.com/notifications/unsubscribe-auth/AACDGRFLFLAZMJKKVQZUM7DQJ6OHZANCNFSM4HSA7KDQ
.

Olá @SebastianM ,

desculpe, não me lembro que lhe enviei uma mensagem!
Por que eu deveria te enviar uma mensagem?

Saúde,
Efraim

@SebastianM você está se referindo ao comentário de @ doom777 https://github.com/SebastianM/angular-google-maps/issues/1647#issuecomment -524882295?

A propósito, também deixei uma mensagem para você no Twitter: D

Todos nós entendemos que você está ocupado e agradecemos seu tempo e esforços para manter estes plug-ins :)

Ei! Que bom que você está por perto. Sempre tento entrar em contato com você no twitter.

@SebastianM Se você já estiver disponível, pode atualizar o modelo stackblitz para usar a versão AGM mais recente?

Sim claro

Am Mo., 16. Set. 2019 hum 20:20 Uhr schrieb Ephraim Khantsis <
notificaçõ[email protected]>:

@SebastianM https://github.com/SebastianM Se você já estiver disponível,
você pode atualizar o modelo stackblitz para usar a versão AGM mais recente?

-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/SebastianM/angular-google-maps/issues/1647?email_source=notifications&email_token=AACDGRDKLMG7VFW7CP6KVYDQJ7E5PA5CNFSM4HSA7KD2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD62BQDQ#issuecomment-531896334 ,
ou silenciar o tópico
https://github.com/notifications/unsubscribe-auth/AACDGRA3WT7CYHW3JSZEMC3QJ7E5PANCNFSM4HSA7KDQ
.

@SebastianM @agm/core 1.0.0 estava funcionando bem com Angular 9.0.0-next.6 mas com Angular 9.0.0-next.7 começou a gerar este erro novamente https://github.com/angular/angular/issues/32506

Você pode dar uma olhada?

Analisando isso agora há pouco, @agm/core 1.0.0 tem pacotes com decoradores representados de uma forma que é estranha para mim. Estou investigando.

Obrigado @JoostK ,

Pude confirmar que o ngcc não é capaz de lidar com a forma como os decoradores estão sendo emitidos desde https://github.com/ng-packagr/ng-packagr/pull/1401 , lançado em ng-packagr 5.5.1.

No entanto, isso ainda é surpreendente, pois o arquivo yarn.lock neste repositório sugere que o ng-packagr 5.4.3 está sendo usado. @SebastianM você poderia confirmar se uma versão mais recente do ng-packagr estava sendo usada para publicação, sem atualizar o arquivo yarn.lock ?

Não, foi usado com 5.4.3

Atualização: tentar com 5.5.1 também não ajuda

Aqui está um PR que trata da forma como os decoradores estão presentes em @agm/core 1.0.0: https://github.com/angular/angular/pull/32901

@ doom777 como você sabe, foi você quem publicou o lançamento? Eu não entendo muito bem como a versão 1.0.0 de @agm/core poderia ter chamadas tanto ctorParameters quanto __decorate se fosse construída com algo diferente de ng-packagr 5.5.1 .

O plugin funciona perfeitamente com Angular 9.0.0-next.9, obrigado @JoostK pelo trabalho incrível :)

Eu finalmente mudei para @ angular / google-maps, funcionando muito bem até agora :)

OK boa sorte. Lembre-se de que ele tem muito menos recursos

Só para acrescentar: estamos tendo muita dificuldade em ser compatível com o angular ivy no 8.0, mas no 9.0 funciona bem.

"@angular/core": "~9.1.0",
quando adiciono forRoot a um módulo de recurso e o chamo em AppModule->Imports . Este erro ocorre. Não consigo encontrar nenhuma solução. Usei o Angular CLI Today para criar o novo aplicativo.

"@angular/core": "^9.1.6",
mesmo...
"quando adiciono forRoot a um módulo de recursos e o chamo em AppModule-> Importações. Este erro ocorre. Não consigo encontrar nenhuma solução. Usei o Angular CLI Today para criar o novo aplicativo."

Finalmente descobri o problema do meu caso.

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

... Alterado para ...

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)
      ]
    };
  }
}
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

dineshkumar20 picture dineshkumar20  ·  3Comentários

ostapch picture ostapch  ·  4Comentários

alexweber picture alexweber  ·  4Comentários

vamsibassetty08 picture vamsibassetty08  ·  3Comentários

shedar picture shedar  ·  4Comentários