2017-03-27 1 views
3

Après la mise à jour de la dernière version v4-rc vers v4 final, le message d'erreur suivant s'affiche lorsque j'appelle "ng build -prod" et je ne sais pas par où commencer la recherche du problème.Erreur AOT après la mise à niveau vers Angular v4 final

> erreur dans c: //src/$$_gendir/app/app.module.ngfactory.ts (1,1): paramètres fournis ne correspondent pas de signature de la cible de l'appel. < < <

Le message est répété une fois de plus, mais aucune information supplémentaire est donnée.

Des idées?

Cordialement, Marc

+0

https://github.com/angular/angular-cli/issues/5620 https://github.com/angular/angular-cli/issues/5623 – yurzui

Répondre

2

de l'équipe angulaire cli:

Nous avons corrigé un problème avec AOT et des modèles où les erreurs ne sont pas toujours signalés. Maintenant, ils devraient être. Cela peut faire apparaître des bogues précédemment cachés qui existaient dans votre base de code.

Il s'agit donc d'un comportement prévu.

L'erreur indique que vous appelez une méthode mais que les arguments que vous fournissez ne correspondent pas à la déclaration de cette méthode.

Exemple

déclaration de la méthode:

private myMethod(arg: any) {} 

Comment vous l'appelez:

this.myMethod(); 

Dans mon cas, j'utilisais le rappel de transition routeur:

@Component({ 
    ..., 
    host: { '[@routerTransition]': '', '(@routerTransition.done)': 'init($event)' }, 
    ... 
}) 

Et la déclaration de la méthode init était comme suit:

public init() { } 

je devais corriger en ajoutant l'argument manquant:

public init(event: any) { } 

NB: Il pourrait probablement être D'un autre côté: appeler une fonction avec plus d'arguments que nécessaire.

+0

Merci pour l'explication! Déjà entendu parler d'eux ayant changé un peu et a également dû changer de code, même certains de ces types d'erreurs. Mais ce message d'erreur me garde dans l'obscurité. Aucun indice pour savoir où chercher. Et tsc aussi ne trouve aucun problème, donc je suppose que c'est quelque part dans un modèle et je vais devoir examiner chaque modèle :( – Marc

+0

@Ploppy Pouvez-vous nous informer comment avez-vous savoir où votre bug était.Lors de la compilation avec -a, nous n'obtenons pas de code compilé à moins que vous obteniez du succès avec la compilation. J'ai une erreur similaire quelque part dans mon modèle mais je ne peux pas trouver quelle méthode c'est! – omeralper

+0

Vous n'avez pas corrigé le code compilé AOT. Vous corrigez le code .ts d'origine. Je vous recommande d'utiliser l'IDE de Visual Studio Code avec cette extension géniale https://marketplace.visualstudio.com/items?itemName=Angular.ng-template qui vous avertit de nombreuses erreurs de compilation AOT dans vos fichiers modèles. – Ploppy