web-dev-qa-db-fra.com

Module introuvable: erreur: impossible de résoudre './$$_gendir/app/app.module.ngfactory'

Je reçois cette erreur ci-dessous après avoir mis à jour mon angular-cli 

ERROR in Template parse errors:
Can't bind to 'index' since it isn't a known property of 'tag'. ("own)="handleKeydown($event, item)"
             (onTagEdited)="onTagEdited.emit(item)"
             [ERROR ->][index]="i"
             [attr.tabindex]="readonly ? -1 : 0"
             [class.readonly]="readonly""): TagInputComponent@16:13

ERROR in ./src/main.ts
Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory' in 'D:\xxxx\yyyy\eeeee\eeee\src'
 @ ./src/main.ts 5:0-74
 @ multi ./src/main.ts

Cette erreur se produit lorsque je lance ng build --prod et fonctionne correctement lorsque je lance ng build sans aucun paramètre. 

25
Karthikeyan VK

Lorsque vous exécutez angg build in angular 2, la dernière version de angular-cli s’exécute automatiquement avec le paramètre --aot (compilation à l’avance), de sorte qu’elle tente d’optimiser votre code. Vous avez un package qui n'est pas encore compatible pour l'optimisation. Vous devez donc mettre à jour vos paquets. Très probablement les paquets qui ont **forRoot()** dans votre app.module.ts

Je recommande de mettre à jour tous les paquets.

Un moyen simple de mettre à jour votre paquet consiste à utiliser le paquet ncu npm comme ci-dessous, que je l’ai obtenu de Comment puis-je mettre à jour correctement angular 2 (npm) vers la dernière version?

Installer

npm install -g npm-check-updates

Usage

ncu pour l'affichage

ncu -u pour réécrire votre package.json

et lancez npm install pour mettre à jour vos paquets

Si ci-dessus ne fonctionne pas, vous devrez peut-être mettre à jour votre code pour une conformité ultérieure. Reportez-vous à cette URL ci-dessous pour apporter des modifications à votre code . https://medium.com/@isaacplmann/getting-your-angular-2-library-ready-for-aot-90d1347bcad

38
Palanivelu Samudi

J'ai eu le même problème et comment j'ai fini par le résoudre: Supprimez le module de résolution améliorée de node_modules, puis exécutez

npm install [email protected]

Après cela, les autres constructions ont fonctionné comme prévu ...

22
user2094257

Utilisation:

ng build --env=prod 

au lieu de: 

ng build --prod
22
Byron

Face à la deuxième partie de ce numéro. 

ERROR in ./src/main.ts
Can't resolve './$$_gendir/app/app.module.ngfactory'

Résolu en mettant angular/cli à jour à 1.2.6 pour angular 4

  1. Supprimer le dossier node_modules
  2. Mettez à jour "@ angular/cli": "1.0.4" en "@ angular/cli": "1.2.6" dans package.json sous devDependencies
  3. Lancer npm install

Ensuite, l’exécution de "ng build --prod" a généré avec succès la construction de production.

11
Saravanan Sachi

Même erreur après la mise à niveau de Angular 6 à 7.1.4. J'ai suivi les instructions trouvées ici .

L'erreur renvoyée était:

ERROR in ./src/main.server.ts
Module not found: Error: Can't resolve './app/app.server.module.ngfactory'

Lors de la tentative de pré-rendu en utilisant la commande.

ng run [my-project-name]:server

La raison en est que j'ai activé Ivy Render, qui n'est pas en production prêt . En supprimant les lignes:

"angularCompilerOptions": {
  "enableIvy": true
} 

D'après le fichier tsconfig.json, tout allait bien dans le monde.

1
Jason

Pour moi, je n'ai pas déclaré le composant que je viens de créer dans module.ts. Cela a fonctionné quand je l'ai déclaré. Vérifiez si l'un de vos composants n'est pas déclaré dans module.ts. 

0
Aathreya

Apparemment, ce message d'erreur peu utile et déroutant peut être causé par l'utilisation d'exportations par défaut dans votre TypeScript utilisé par Angular AOT (prérendering). L'utilisation de export default class provoquera cette erreur avec toutes les versions de Angular et n'est actuellement pas prise en charge. Vous devez changer en export class.

Pour afficher l'état actuel du problème et voir s'il est corrigé, consultez https://github.com/angular/angular/issues/11402 . Au moment où j'écris ceci, le dossier est ouvert depuis plus de deux ans, mais ils prétendent qu'il sera réglé un jour.

0
pbarranis