Angular-google-maps: 与Ivy不兼容(实验性)

创建于 2019-06-01  ·  54评论  ·  资料来源: SebastianM/angular-google-maps

问题说明
使用Ivy进行编译时,编译失败并显示以下错误:

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]

重现步骤和问题的最小演示
我无法为此创建堆栈炸弹或塞子,因为它打算显示编译器失败,并且我不知道如何演示这一点。
您可以签出https://github.com/paullessing/agm-ivy-demo并尝试在运行yarn install之后进行构建。

  1. 使用ng new安装Angular 8的新项目
  2. 添加@agm/core并设置默认导入
    imports: [ BrowserModule, AgmCoreModule.forRoot({ apiKey: environment.mapsApiKey, }) ]
  3. tsconfig.app.json启用常春藤:
    { ... "angularCompilerOptions": { "enableIvy": true } }
  4. angular.json启用AOT来解决“未找到惰性路由”:
    { "projects": { "my-project": { "architect": { "build": { "options": { ... "aot": true, } } } } } }
  5. 运行ng serve

当前行为
编译失败,并显示以下错误:

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]

imports数组中的位置1是AgmCoreModule.forRoot()

预期/期望行为
没有编译器故障

angular2和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

其他资讯
禁用常春藤时,编译工作。

可能与https://github.com/angular/angular/issues/28603有关,该声明指出,如果package.json不包含typestypings属性,则模块将从编译中排除。

important bug build system

最有用的评论

我同意必须尽快发布。 该库与ivy的不兼容是导致我们无法在中型Web应用程序上测试ivy的少数问题之一。

所有54条评论

无法复制。 可能是importss有两个's'吗?

无法复制。 可能是进口商品有两个“ s”吗?

我认为这是因为这是一个名称imports的数组,因此错误消息正在尝试对其进行复数处理。

我只是再次尝试了一个全新的项目,但它仍然失败了(使用beta版本6)。 我更新了上面的细节。

好的,尝试

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

AgmCoreModule.forRoot...到导入中

npm start

从字面上看,这正是我在上面的描述中链接的演示项目中所做的事情。

同样的问题在这里。

@paullessing @ ramses10您想加入Discord,以便我们可以更互动地进行讨论吗?

@ doom777对我很好

转载于build:prod
@ doom777您是否尝试过prod标志?

我现在正在遇到一模一样的问题。 我的应用程序类似于Paul共享的示例。 我在ng b --prodng b上都得到了Value at position 1 in the NgModule.importss of AppModule is not a reference: [object Object] ng b

角度:8.0.0
@ agm / core:1.0.0-beta.6

嗨,启用常春藤时,我有同样的问题:
src / app / app.module.ts(37,12)中的错误:错误TS-991010:AppModule的NgModule.importss中位置16处的值不是引用:[object Object]

常春藤被禁用时有效

通过查看问题,我发现在angular和angular-cli软件包中有2个相关问题。

似乎该错误来自node_module之外的库,并且可以使用path-mapping

检查以下注释和问题: https :

还有这个问题: https :

不幸的是,我无法使用./node_modules/.bin/ivy-ngcc -s ./dist来使用注释(第一个链接)中描述的技术来实现库的工作。

我不太了解发生了什么,但这也许可以为您提供帮助。

嗯,也许在实施#1648之后它会工作。 我不知道我们的lib中有任何路径链接的库,但是我们确实使用了不寻常的包装

关于此问题有任何更新吗?

使用最新的角度beta和常春藤时在这里同样的问题

经过测试后,#1634确实修复了该问题,因此问题出在我们过时的构建系统上。 希望@SebastianM可以审查和合并PR

这事有进一步更新吗?

是的,我正在尝试让#1634的作者更新其PR,以便我们可以将其合并。希望下周。 到目前为止,我还没有得到任何答复,但是如果这种情况持续下去,我将克隆他的PR并自己完成。

尚未发布到npm?

还没有。 我们不会发布每个提交。

您能发布这一本书吗,因为它可以为Angular 9 / IVY提供支持,因此可以认为是主要本书。

还没有。 我们不会发布每个提交。

@ doom777可能是个好主意,因为它是主要更新,并引入了主要修复程序...

我同意必须尽快发布。 该库与ivy的不兼容是导致我们无法在中型Web应用程序上测试ivy的少数问题之一。

@ doom777关于此版本或下一版本何时发布的任何更新? 发布到npm是否有任何困难? 该软件包的下载量超过65k,这是有多少人可以从新版本中受益。

通过在这里阅读https://docs.npmjs.com/creating-and-publishing-scoped-public-packages,我了解到公开发布应该是一个快速简便的过程,否则我会丢失一些东西吗?

谢谢

@ doom777有任何更新吗?

嘿大家。 我知道有些人急于发布此修复程序,但是(1)我不负责发布新的agm版本,(2)我们是最近发布的,并且(3)Ivy仍在预览中,因此对于我们来说,释放支持很重要,这不是PRIORITY 0 CRITICAL
我向@SebastianM发送了有关发布新版本的消息,并正在等待回应。

感谢您的更新和信息。

是的,Ivy仅处于预览阶段,但今天仍然可以帮助许多开发人员。
因为npm允许每24小时发布一次,所以最近的发布应该不会成为问题;)

希望@SebastianM可以尽快考虑发布新版本:)

谢谢

@ doom777不是PRIORITY 0 CRITIAL,但非常重要。

Angular即将发布v9.0.0,它将默认启用常春藤,并且此软件包在此版本中将无用。 如果PR修复了它,我真的看不到为什么不发布新版本。

另外,我认为该软件包仍处于测试阶段没有理由。 在这里工作正常,没有错误,没有不稳定。

我提交的PR(#1634)是为了解决已经存在一段时间(Angular 4+?)的AOT编译,这应该是发布新Beta版的一个很好的理由。

关于#1647:Ivy需求恰好需要AOT,这就是为什么它会在Ivy上中断的原因,但是关于库的其他事情可能需要更改以使其与Ivy完全兼容。

在工作中,我开始尝试使用Ivy构建应用程序,但是我们依赖的其他软件包似乎也有问题,并且升级到Ivy并不是我们应用程序的核心要求。 由于我们有更多的时间进行测试,并且可能会添加更多的映射功能,因此我可以考虑做出我认为必要的任何更改,但是我无法承诺要花多少时间来帮助该项目。

@ iget-master我也不会说没有错误,也没有不稳定(不是我遇到过任何问题,但是很可能存在问题,保留“ beta”标记确实使迭代更容易,并且在拥有更稳定的API之前更改需要更改的内容)

我们收到了来自贡献者的回复,就像它不是优先事项一样。 我可以说并说释放它以便修复AOT和Ivy支持有些重要。 AOT已经存在了一段时间,并且在几个月的时间里,Angular 9将会出现(预期)稳定的Ivy。 我个人认为没有理由声称它是0优先级。

其次,仅运行命令并将其释放给npm有什么问题?

一个贡献者声称它可能还不稳定,很好,在这种情况下,保持beta标志是有意义的。 但! Beta是否应该有点不稳定? 这意味着可以预期会有频繁的发布,但是我们看到的每月只有一个发布。 如果对它的不稳定性有很大的担忧,最好将当前版本发布为稳定版本,并在beta标志下修复该版本。

请记住,每周约有6万人可以从新版本中受益;)

谢谢

我正在考虑完全复制此存储库,然后以另一个名称将其发布到npm,因此,每个观看此线程的人都可以尝试一下,直到赶上。 还有其他人想这样做吗?

算我一个。

我们不反对您分叉和部署我们的库,这就是为什么它是开源的。 😄
我正在尝试解决这个问题,但这并不像“运行命令”那么简单。 我希望beta.8会在Angular 9之前发布。

有什么可以帮忙的吗? 有需要测试或开发的功能吗?

@mruknowme,请不要这样做。

@ doom777刚开始这样做,直到此存储库上有更多牵引力

更新:我正在尝试发布此文件,很遗憾,塞巴斯蒂安无法访问,只有他才能进行npm部署。

嘿,

偶然看到了这个线程。 @以法莲你在哪里发给我一个消息?
也许我的推送设置搞砸了m我可以在推送新版本时
家。 抱歉耽搁了!

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

更新:我正在尝试发布此文件,很遗憾塞巴斯蒂安(Sebastian)是
无法到达,只有他才能进行npm部署。

-
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/SebastianM/angular-google-maps/issues/1647?email_source=notifications&email_token=AACDGRABQG3CO4VBHKU3N23QJ6OHZA5CNFSM4HSA7KD2YY3PNVWWK3TUL52HS4DFVREXG43VMVBJZZCOMPZZNWEXZNWXZZNWNZXNLOXZNWXZZNWNZXNWXZP
或使线程静音
https://github.com/notifications/unsubscribe-auth/AACDGRFLFLAZMJKKVQZUM7DQJ6OHZANCNFSM4HSA7KDQ

@SebastianM

抱歉,不记得我给您发消息了!
我为什么要向您发送消息?

干杯,
以法莲

@SebastianM您是指@ doom777评论https://github.com/SebastianM/angular-google-maps/issues/1647#issuecomment -524882295吗?

顺便说一句,我也在Twitter上给您留言了:D

我们都知道您很忙,感谢您为维护该插件付出的时间和精力:)

嘿! 很高兴您在附近。 我总是尝试在Twitter上与您联系。

@SebastianM如果已经可用,是否可以更新stackblitz模板以使用最新的AGM版本?

当然可以

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

@SebastianM https://github.com/SebastianM如果您已经可以使用,
您可以更新stackblitz模板以使用最新的AGM版本吗?

-
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/SebastianM/angular-google-maps/issues/1647?email_source=notifications&email_token=AACDGRDKLMG7VFW7CP6KVYDQJ7E5PA5CNFSM4HSA7KD2YY3PNVWWK3TUL52HS4DFVREXG43VMBJZKCOM63KW
或使线程静音
https://github.com/notifications/unsubscribe-auth/AACDGRA3WT7CYHW3JSZEMC3QJ7E5PANCNFSM4HSA7KDQ

@SebastianM @agm/core 1.0.0Angular 9.0.0-next.6正常工作,但与Angular 9.0.0-next.7开始再次引发此错误https://github.com/angular/angular/issues/32506

你能看看吗?

刚才看了看, @agm/core 1.0.0的包中有装饰器,这对我来说很奇怪。 我正在调查。

感谢@JoostK ,期待很快的修复:)

因此,我能够确认ngcc自ng-packagr 5.5.1中发布的https://github.com/ng-packagr/ng-packagr/pull/1401起就无法处理装饰器的发出方式。

但是,这仍然令人惊讶,因为此存储库中的yarn.lock文件表明正在使用ng-packagr 5.4.3。 @SebastianM您可以确认是否在不更新yarn.lock文件的情况下使用了较新版本的ng-packagr吗?

不,它与5.4.3一起使用

更新:尝试5.5.1也无济于事

这是一个PR,涉及装饰器在@agm/core 1.0.0中的存在方式: https :

@ doom777您怎么知道,您是发布该版本的人吗? 我不太了解@agm/core的1.0.0版本如何使用ng-packagr 5.5.1以外的任何版本同时调用ctorParameters__decorate

该插件可与Angular 9.0.0-next.9完美配合,感谢@JoostK的出色工作:)

我终于切换到@ angular / google-maps,到目前为止效果很好:)

好的祝你好运。 请记住,它的功能要少得多

补充一下:在8.0中,与角形常春藤兼容非常困难,但在9.0中,它可以正常工作。

"@angular/core": "~9.1.0",
当我将forRoot到功能模块并在AppModule->Imports调用它时。 发生此错误。 找不到任何解决方案。 我使用今天的Angular CLI创建了新的应用程序。

"@angular/core": "^9.1.6",
相同的...
“当我将forRoot添加到功能模块并在AppModule-> Imports中调用它时。会发生此错误。找不到任何解决方案。我今天使用Angular CLI创建了新的应用程序。”

终于找到了我的案子的问题。

...在模块中...

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

... 变成 ...

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)
      ]
    };
  }
}
此页面是否有帮助?
0 / 5 - 0 等级