Angular CLI构建产品:TypeError:无法读取未定义的属性“种类”

时间:2019-09-11 14:41:33

标签: angular typescript angular-cli

我尝试使用Angular CLI function f(description /*: ?string */ = null, entrypoints /*: ?Array<Object> */ = null): void {} 构建项目,但出现此错误:

  

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

如果我使用的不是ng build --prod,则不会出现任何错误

完整错误:

--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)

谢谢。

5 个答案:

答案 0 :(得分:6)

现在要牢记 TypeScript 3.6.4已经发布。不过,可以在下面阅读并非真正有效的内容。

TypeScript <= 3.6.3出现了此问题,Handle parentless nodes in isParameterPropertyDeclaration

如果您安装3.7dev或新的beta),它将可以正常编译。


请注意:如果您收到有关建筑物版本的ERROR,请通过tsconfig禁用它。
为此,请使用disableTypeScriptVersionCheck

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

如果出现其他任何问题,请按照评论聊天。

答案 1 :(得分:2)

尽管该问题明确指出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.optimization更改truefalse)。

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

答案 2 :(得分: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 :(得分:0)

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

就我而言,我有3.7版本,并通过升级到3.8解决了该问题。

答案 4 :(得分:0)

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

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

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