“在非 ES5 类上调用 getInternalNameOfClass() 中的错误:预期 AngularFireModule 具有内部类声明”

D_B*_*D_B 33 firebase angularfire angular angular9

Terminal -

    "WARNING in Invalid constructor parameter decorator in D:/New folder/SilverLife/node_modules/@angular/fire/fesm2015/angular-fire.js:
     () => [
        { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
    ]
    
    ERROR in getInternalNameOfClass() called on a non-ES5 class: expected
    AngularFireModule to have an inner class declaration"
Run Code Online (Sandbox Code Playgroud)

在我的 Angular 9 项目中集成 Angular firebase 时,我遇到了这个问题。 我的应用程序的 package.json

小智 74

尝试改变compilerOptions你的目标tsconfig.jsones5es2015

  • @apaternina 是时候停止支持 IE 11 了。甚至微软也倾向于这样做:https://techcommunity.microsoft.com/t5/microsoft-365-blog/microsoft-365-apps-say-farewell-to-internet-explorer -11-和/ba-p/1591666 (5认同)
  • 如果您设置为“es2015”,它将不适用于 IE 11,正如您在这篇文章中看到的那样 https://medium.com/angular-in-depth/angular-and-internet-explorer-a6e4b5a5dae1 (3认同)

iLo*_*rns 48

我在从 Angular8 迁移到 Angular9 的过程中遇到了同样的问题。

在 Angular9 中,他们引入了称为 Angular Ivy 的新一代编译和渲染管道。文档说:

可以使用 View Engine 编译器创建的库构建 Ivy 应用程序。这种兼容性由称为 Angular 兼容性编译器 (ngcc) 的工具提供。CLI 命令在执行 Angular 构建时根据需要运行 ngcc。

来源:https : //angular.io/guide/ivy

所以为了项目的"target": "es5"工作,使用后npm install你必须运行ngcc。

您可以将其添加到 package.json 文件中:

{
  "scripts": {
    "postinstall": "ngcc"
  }
}
Run Code Online (Sandbox Code Playgroud)

然后它应该在运行后自动运行npm install