2017-08-29 9 views
0

Kurz gesagt, ich habe eine App, die 4,6 MB auf NG dient.Angular 4 ng dienen --prod vs ng dienen

Wenn ich tun:

ng dienen --prod

I 1 MB Dateigröße erhalten.

Das --prod macht jedoch irgendwie meine gesamte Anwendung kaputt.

Meine ganzen Dienste (Versprechen basierend), die eine Anfrage an den Server senden, funktionieren nicht mehr.

Die bizzar Sache ist, dass einfach ng funktioniert perfekt feinen UND bestimmte Teile dienen ng dienen --prod funktioniert auch, solange es keinen Serveranfrage.

Ich poste keinen Code seit ng dienen Version funktioniert ok.

Die wichtigste Frage ist:

Warum ich Hut Art von Verhalten zu bekommen?

Darüber hinaus, irgendwann auf App ng dienen --prod plötzlich völlig aus dem Nichts funktioniert und dann nach dem Neustart der App, noch einmal, eine kaputte App.

EDIT:expliziter Details:

ich Fiddler bin mit allen Details, um sicherzustellen, korrekt sind:

Fiddler pic

Wie Sie sehen können, die Details sind ok.

Jetzt für den Code, der verantwortlich, diesen Antrag auf der Clientseite zu simulieren:

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); 
     } 
    }); 
} 

Jetzt merken, wie alles perfekt funktioniert, wenn ich verwenden nur ng dienen (Network Tab):

ng serve

Wie Sie sehen können, bin ich bereits eingeloggt und bekomme eine Antwort.

Jetzt

In dem Moment, ich diene

ng --prod

plötzlich die gleiche Login-Anfrage mit den gleichen Details nicht mehr funktioniert:

ng serve --prod

Das ist super Bizzar.

Alle meine Methoden, die für Serveranforderungen verantwortlich sind, sind alle gleich.

„Bad Request“ mit einigen Fehlercode, der von dem Server kommt selbst (meine eigenen Server-Code wie „E-Mail nicht gefüllt“, die auch ist bizzar, da ich die richtigen Parameter zu tun senden)

+0

Haben Sie die webpack Config-Dateien für die Produktion und Entwicklung zu vergleichen? –

+0

Ich wusste, dass ich etwas vergessen habe. @AmanArora - Ich verwende Angular-CLI – simon

+0

Was sind die Fehler, die Sie beim Navigieren/Abrufen von Daten bekommen? – DeborahK

Antwort

0

, wenn Sie tat ng serve --prod eckig cli machen eine Produktion mit Baumschütteln und AOT (Ahead Of Time) Kompilation

bedeutet es Baum schütteln alle Ihre Komponenten und fügte hinzu, die jemals tatsächlich in Ihrem Code verwendet, nicht alle. So sehen Sie die Vendor.js ist wirklich einige, wenn Sie getan haben ng serve

Sie können im Detail in der CLI-Dokumentation lesen, welche Build macht was.

+0

Hallo thx für Ihre Antwort. Das weiss ich schon. Ich möchte dieses Verhalten. Ich kann jedoch nicht wirklich verstehen, warum das Baumschütteln meine App auf Serveranforderungen zum Absturz bringen würde. ** BEARBEITEN: Alle meine Serveranforderungen befinden sich in einem Service-Ordner mit Dienstdateien (.ts-Erweiterungen). Der Service-Ordner befindet sich innerhalb von src/app, während ich den neuesten eckig-cli habe. Es klingt so, als würde es meine Dienste nicht beinhalten, aber ich bekomme Fehlercodes vom Server. – simon

+0

hmm, sowohl der Build-Prozess ist anders, in unserer Anwendung passiert auch das Gleiche.Ein Teil des Codes zeigt einen Fehler in prod/aot build. also reparieren wir sie vor dem comit code. –

1

--prod die Möglichkeit, Build ist, ist Standard-Debug-Modus

Nehmen wir ein Beispiel, warum Anwendung bricht, sehen wir Code wie dieses:

<div (click)="toshow = !toShow">Toggle</div> 

vorstellen, Toshow ist nicht auf der Komponente definiert oder versehentlich haben wir einen Tippfehler sagen toShow bis toshow.

In diesem Fall ng build und ng serve funktioniert aber ng build --prod und ng serve --prod geben Fehler

+0

Ich bekomme keine Fehler nach ng dienen --prod. Ich erhalte Fehler beim Navigieren in Komponenten, die meine Services-Dateien verwenden (jeder Service hat seine eigenen Get/Post-Methoden über Versprechungen) – simon

Verwandte Themen