【问题标题】:Angular cli build prod: TypeError: Cannot read property 'kind' of undefinedAngular cli build prod:TypeError:无法读取未定义的属性“种类”
【发布时间】:2020-01-13 10:33:13
【问题描述】:

我尝试使用 Angular CLI ng build --prod 构建项目,但出现此错误:

TypeError 中的错误:无法读取未定义的属性“种类”

如果我使用非 --prod 构建,我不会收到任何错误

完全错误:

ERROR in TypeError: Cannot read property 'kind' of undefined
    at isParameterPropertyDeclaration (node_modules/typescript/lib/typescript.js:13445:88)
    at Object.filter (node_modules/typescript/lib/typescript.js:469:31)
    at transformClassMembers (node_modules/typescript/lib/typescript.js:70813:20)
    at createClassDeclarationHeadWithoutDecorators (node_modules/typescript/lib/typescript.js:70665:110)
    at visitClassDeclaration (node_modules/typescript/lib/typescript.js:70584:19)
    at visitTypeScript (node_modules/typescript/lib/typescript.js:70432:28)
    at visitorWorker (node_modules/typescript/lib/typescript.js:70227:24)
    at sourceElementVisitorWorker (node_modules/typescript/lib/typescript.js:70252:28)
    at saveStateAndInvoke (node_modules/typescript/lib/typescript.js:70165:27)
    at sourceElementVisitor (node_modules/typescript/lib/typescript.js:70237:20)
    at visitNodes (node_modules/typescript/lib/typescript.js:67751:48)
    at Object.visitLexicalEnvironment (node_modules/typescript/lib/typescript.js:67784:22)
    at visitSourceFile (node_modules/typescript/lib/typescript.js:70521:53)
    at saveStateAndInvoke (node_modules/typescript/lib/typescript.js:70165:27)
    at transformSourceFile (node_modules/typescript/lib/typescript.js:70147:27)
    at transformSourceFileOrBundle (node_modules/typescript/lib/typescript.js:70127:20)

角度版本:

Angular CLI: 8.3.3
Node: 12.9.0
OS: darwin x64
Angular: 9.0.0-next.5
... animations, common, compiler, compiler-cli, core, forms
... language-service, localize, platform-browser
... platform-browser-dynamic, router

Package                            Version
------------------------------------------------------------
@angular-devkit/architect          0.900.0-next.3
@angular-devkit/build-angular      0.900.0-next.3
@angular-devkit/build-optimizer    0.900.0-next.3
@angular-devkit/build-webpack      0.900.0-next.3
@angular-devkit/core               9.0.0-next.3
@angular-devkit/schematics         8.3.3
@angular/cdk                       8.1.4
@angular/cli                       8.3.3
@angular/http                      8.0.0-beta.10
@angular/material                  8.1.4
@angular/material-moment-adapter   8.1.4
@ngtools/webpack                   9.0.0-next.3
@schematics/angular                8.3.3
@schematics/update                 0.803.3
rxjs                               6.5.3
typescript                         3.6.3
webpack                            4.39.3

谢谢。

【问题讨论】:

  • this issue 报道的 cmets 可能会对您有所帮助。
  • @Narm 我看到了这个页面,但它没有帮助,tnx。
  • 添加一些代码 sn-p 以了解试图访问的 kind 属性在哪里,给我们一个 anwser 给您非常有帮助。
  • @DiegoBascans 我添加了完整的错误。
  • @YakirTsuberi Angular 团队通知我,TypeScript 3.6.4 将尽快发布以解决此问题。

标签: angular typescript angular-cli


【解决方案1】:

我在使用 ng-recaptcha v6.0.2 和 angular v6.2.2 时遇到了这个问题

对我来说,解决方法是在 angular.json 中将 buildOptimizer 设置为 false

"configurations": {
    "development": {
        "buildOptimizer": false
    }
}

【讨论】:

    【解决方案2】:

    这个问题在很多情况下都会出现,其中一个主要原因是安装的@angular/cli 版本与全局安装的@angular/cli 版本不同确保两者是相同的版本。在其他情况下,您必须更新 devkit。

    请看看这些线程,你会得到一个想法:

    1. https://github.com/angular/angular-cli/issues/13172
    2. https://github.com/angular/angular-cli/issues/13861

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,并通过将我的 typescript 依赖项更新到最新的稳定版本来解决它。

      就我而言,我的版本是 3.7,我通过升级到 3.8 解决了这个问题。

      【讨论】:

        【解决方案4】:

        虽然该问题明确指出isParameterPropertyDeclaration 是错误的来源,但在搜索以下非常相似的错误时,此问题是Google 唯一链接的问题:

        ERROR in ./node_modules/some_library/...
        Module build failed (from ./node_modules/@angular-devkit/build-optimizer/src/build-optimizer/webpack-loader.js):
        TypeError: Cannot read property 'kind' of undefined
        

        由于我找不到上述错误的任何好的答案,我将其发布在这里以供参考。

        如果您正在使用受此错误影响的库,则应将您的 @angular/cli 版本升级到 8 或在生产模式下禁用优化(要禁用优化,请将 projects.your_project_name.architect.build.configurations.production.optimizationtrue 更改为 false)。

        如果您是试图完全支持 Angular 6 和 7 版本的库所有者,请在库的 tsconfig.json 中,将 compilerOptions.emitDecoratorMetadata 设置为 true 并重新编译。由于现在您要从装饰器中导出所有元数据,Angular 将对导出的元数据执行 .kind,从而解决问题是 undefined

        【讨论】:

        • compilerOptions.emitDecoratorMetadata to true 解决了我的问题。
        【解决方案5】:

        现在请记住 TypeScript 3.6.4 已经发布。不过,可以阅读下面的内容并没有真正起作用。

        TypeScript <= 3.6.3 提出了这个问题,Handle parentless nodes in isParameterPropertyDeclaration

        如果你安装3.7dev或新的beta),它会编译得很好。


        注意:如果您在构建时收到ERROR,关于 TS 版本,只需通过 tsconfig 禁用它。
        为此使用disableTypeScriptVersionCheck

        "angularCompilerOptions": {
          "disableTypeScriptVersionCheck": true
        },
        "compilerOptions": {
         ...
        

        如果出现任何其他问题,请关注评论的聊天。

        【讨论】:

        • 我遇到了与问题相同的错误,在升级到 TypeScript 3.7 后,我无法构建我的 Angular 项目。错误是,“Angular 编译器中的错误需要 TypeScript >=3.4.0 和
        • 感谢@LppEdd。这确实让我可以运行我的项目构建,但是在构建角度组件时我仍然收到“TypeError:无法读取未定义的属性'种类'”消息。与原始问题类似的问题,“ng build”工作正常,但“ng build --prod”抛出此错误。
        • @TimHolt 您能否将 angular-devkit 版本修复为“0.803.8”(您的似乎已过时)和 angular/cli 在“8.3.8”?
        • @TimHolt 也将 angular-devkit/core 转换为“8.3.8”。您似乎有一些依赖项与 CLI 版本 8.3.8 保持一致。甚至不要尝试继续使用 CLI 8.3.9,它现在无法与 TS dev 一起正常工作。
        • 你是一个该死的救生员。谢谢!
        猜你喜欢
        • 1970-01-01
        • 2021-06-28
        • 2018-12-20
        • 2018-06-28
        • 1970-01-01
        • 1970-01-01
        • 2021-08-01
        • 2020-01-12
        • 2021-08-04
        相关资源
        最近更新 更多