web-dev-qa-db-fra.com

Angular cli build prod: TypeError: Impossible de lire la propriété 'kind' d'undefined

J'essaie de construire un projet avec Angular CLI ng build --prod et j'obtiens cette erreur:

ERREUR dans TypeError: Impossible de lire la propriété 'kind' d'undefined

si je construis avec pas de --prod Je ne reçois aucune erreur

Erreur complète:

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)

Version angulaire:

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

Merci.

11
Yakir Tsuberi

Gardez à l'esprit maintenant TypeScript 3.6.4 est sorti. Pourtant, il est correct de lire ci-dessous ce qui ne fonctionnait pas vraiment.

TypeScript <= 3.6.3 présente ce problème, Gérer les nœuds sans parent dans isParameterPropertyDeclaration .

Si vous installez 3.7 (dev ou le nouveau beta), il se compilera très bien.


Remarque: si vous recevez un ERROR lors de la construction, concernant la version TS, désactivez-le simplement via tsconfig.
Pour cela, utilisez disableTypeScriptVersionCheck

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

Suivez le chat du commentaire si un autre problème survient.

10
LppEdd

Bien que la question indique spécifiquement isParameterPropertyDeclaration comme source de l'erreur, cette question est la seule liée par Google lors de la recherche de l'erreur très similaire suivante:

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

Comme je n'ai pas trouvé de bonne réponse à l'erreur ci-dessus, je la poste ici pour référence.

Si vous utilisez une bibliothèque affectée par cette erreur, vous devez mettre à jour votre @angular/cli version à 8 ou désactivez l'optimisation en mode production (pour désactiver l'optimisation, modifiez projects.your_project_name.architect.build.configurations.production.optimization de true à false).

Si vous êtes un propriétaire de bibliothèque essayant de prendre entièrement en charge les versions 6 et 7 d'Angular, dans le tsconfig.json de votre bibliothèque, définissez compilerOptions.emitDecoratorMetadata à true et recompilez. Puisque maintenant vous exportez toutes les métadonnées des décorateurs, Angular fera .kind des métadonnées exportées, corrigeant le problème où il se trouvait undefined.

1

J'ai eu le même problème et l'ai résolu en mettant à jour ma dépendance TypeScript vers la dernière version stable.

Dans mon cas, j'avais la version 3.7 et j'ai résolu le problème en passant à 3.8.

0
Francesco Borzi