Je reçois une erreur suivante lorsque je construis l’application Angular en utilisant "ng build --prod". Cela fonctionne lorsque je compile avec Angular 4 et que je rencontre une erreur avec Angular 5. Avec Angular 5, "servir" fonctionne parfaitement.
ERROR in Error: Impossible de déterminer le module de la classe TimeAgoPipe dans mypath/node_modules/time-ago-pipe/time-ago-pipe.ts! Ajoutez TimeAgoPipe au NgModule pour le réparer.
Obtenir une erreur pour https://www.npmjs.com/package/time-ago-pipe
Des solutions?
Vérifier la sensibilité de la casse
import { MyComponent } from "./User/my-component";
Dans mon cas, le problème était que l'utilisateur du dossier avait été créé avec U comme capital dans mon instruction d'importation. Mais en réalité, sur disque, c'était dans une petite boîte. Lorsque j'ai renommé le dossier en utilisateur (avec u minuscule) dans ma déclaration d'importation également, cela a fonctionné pour moi.
import { MyComponent } from "./user/my-component";
Alors vérifiez la sensibilité à la casse, de votre chemin d'importation.
Angular 5 et plus particulièrement Angular Cli 1.5 a la compilation par défaut activée à l'avance et il a besoin de connaître le module pour tous les composants/tuyaux, etc., qu'il trouve dans votre dossier de projet si certains composants ne sont déclarés dans aucun module, jeter des erreurs.
Vous pouvez soit déclarer TimeAgoPipe
dans certains modules:
@NgModule({
declarations: [TimeAgoPipe, ...]
})
export class AppModule {}// for example can be any other used module
ou essayez d’exécuter build sans compilation à l’avance le code résultant fonctionnera plus lentement
ng build --prod --aot=false
troisième manière si vous n'utilisez pas du tout ce tuyau, vous pouvez l'ajouter aux fichiers exclus dans tsconfig.json
{
...
"exclude": [ "path/to/unused/component.ts", ... ]
}
J'avais exactement le même problème et je peux proposer une solution de contournement, sans savoir pourquoi ce tuyau spécifique n'a pas été capté avec succès par la version ultérieure:
Solution de contournement
Copiez le fichier time-ago-pipe.ts à partir de node_modules/time-ago-pipe et copiez ce fichier dans votre propre projet.
Ajoutez-le normalement à vos déclarations dans votre module et importez-le dans vos importations, par exemple:
import { TimeAgoPipe } from './_pipes/time-ago-pipe';
Cela sera ensuite compilé avec succès dans la construction AOT et vous pourrez toujours utiliser le canal.
Dans mon cas, l'erreur était due à plusieurs définitions de la même classe dans différents fichiers. Cela est dû à des codes copier-coller de certains développeurs.
Pour moi, cela ne fonctionnait pas même lorsque composant était présent dans les déclarations. J'ai donc supprimé le composant des déclarations et des importations. Et puis je l'ai récupéré en utilisant le code Visual Studio intellisense pour compléter automatiquement le nom du composant dans les déclarations et en utilisant l'importation automatique pour importer le composant en haut du fichier de module. Et à ma grande surprise, cela a fonctionné.
Si l’une des solutions ci-dessus ne vous convient pas, cela vaut également la peine d’essayer.