Bientôt, j'ai une application qui est de 4,6 Mo sur ng servir.
Quand je fais:
ng servir --prod
Je reçois une taille de fichier de 1 Mo.
Cependant, le --prod fait en quelque sorte toute ma pause d'application.
Tous mes services (basés sur les promesses) qui envoient une demande au serveur ne fonctionnent plus.
Le bizzar, c’est que simplement ng serve fonctionne parfaitement bien ET certaines parties de ng serve --prod fonctionnent aussi bien, tant qu’il en existe aucune demande de serveur.
Je ne poste pas de code puisque ng serve version fonctionne correctement.
La question principale est:
Pourquoi ai-je un comportement de ce genre?
En outre, à un moment donné, l’application basée sur ng serve --prod a soudainement fonctionné de bout en bout, puis, une fois encore, j’ai redémarré l’application, une application défectueuse.
EDIT: _ {plus de détails sur EXPLICIT:
J'utilise Fiddler pour m'assurer que tous les détails sont corrects:
Comme vous pouvez le constater, les détails sont corrects.
Passons maintenant au code qui est chargé de simuler cette demande côté client:
login(uName: string, pw: string, type: number): Promise<any> {
return new Promise(resolve => {
if (type === 1) {
const options = new RequestOptions({ headers: this.headers });
const body = JSON.stringify({ username: uName, password: pw });
this.http.post(this.loginUrl, body, options)
.toPromise()
.then(response => {
resolve(response);
})
.catch(this.handleError);
} else if (type === 2 || type === 3) {
this.http.post(this.loginUrl, { username: uName, token: pw })
.toPromise()
.then(response => {
resolve(response);
})
.catch(this.handleError);
}
});
}
Maintenant, remarquez comment tout fonctionne parfaitement lorsque j'utilise ng serve uniquement (onglet Réseau):
Comme vous pouvez le constater, je suis déjà connecté et je reçois une réponse.
À présent,
Le moment que je fais
ng servir --prod
Soudain, la même demande de connexion avec les mêmes détails ne fonctionne plus:
C'est super bizzar.
Toutes mes méthodes responsables des requêtes du serveur sont identiques.
"Requête incorrecte" avec un code d'erreur provenant du serveur lui-même (mon propre code serveur comme "email non renseigné", ce qui est également un bizzar puisque j'envoie les paramètres corrects)
--prod
est l'option de construction, le mode de débogage par défaut
Voyons un exemple de pourquoi l'application se casse, voyons un code comme celui-ci:
<div (click)="toshow = !toShow">Toggle</div>
imaginez, toshow n’est pas défini sur le composant ou par erreur nous avons fait une faute de frappe en disant toShow
à toshow
.
Dans ce cas, ng build
et ng serve
fonctionneront mais ng build --prod
et ng serve --prod
donneront une erreur
Nous avons également rencontré un problème similaire et résolu en suivant ces instructions. Le problème est que AOT ne prend pas en charge certaines fonctionnalités prises en charge par JIT. S'il vous plaît vérifier ce lien. j'espère que cela vous aidera.
quand vous avez fait ng serve --prod
angular cli, créez une production avec l’arbre tremblant et la compilation AOT (Ahead Of Time)
Cela signifie que l’arbre secoue tous vos composants et ajoute ceux qui ont déjà été utilisés dans votre code, mais pas tous. C'est ainsi que vous voyez que vendor.js en est vraiment un lorsque vous avez ng serve
vous pouvez lire en détail dans la documentation de cli ce que build fait quoi.