web-dev-qa-db-fra.com

Angular 4 ng servir --prod vs ng servir

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:

 Fiddler pic

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):

 ng serve

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:

 ng serve --prod

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)

5
simon

--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 

1
Ali Adravi

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.

https://github.com/rangle/angular-2-aot-sandbox

Angular DOC À propos des restrictions AOT

0

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.

0
Aniruddha Das