2017-08-29 48 views
0

不久,我有一個4.6MB的應用程序。角度4納克服務 - 產品vs服務

當我這樣做:

納克服務--prod

我得到1MB的文件大小。

但是,--prod以某種方式使我的整個應用程序中斷。

向服務器發送請求的整個服務(基於承諾)不再有效。

的bizzar的是,簡單地納克服務工作完全正常某些部分納克服務--prod正常工作爲好,只要沒有服務器的請求。

我不會發布任何代碼,因爲ng服務版本沒問題。

的主要問題是:

爲什麼我得到的帽子樣的行爲?

而且,在某些時候,應用程序基於納克服務--prod突然完全摸索出無處再經過我重新啓動應用程序,再次,一個破碎的應用程序。

編輯:更明確的信息:

我使用招,以確保所有的信息是正確的:

Fiddler pic

正如你所看到的,細節都OK。

現在的代碼負責,以模擬在客戶端該請求:

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

現在可以看到的一切是如何工作的完美,當我使用納克服務只(網絡選項卡):

ng serve

正如你所看到的,我已經登錄了,我確實得到了迴應。

現在,

納克服務--prod

突然用相同的細節同樣的登錄請求不再起作用的那一刻:

ng serve --prod

這是超級bizzar。

所有負責服務器請求的方法都是一樣的。

「錯誤的請求」與來自服務器本身的一些錯誤代碼(像我自己的服務器代碼「的電子郵件未填寫」這也是bizzar,因爲我發送正確的參數),當你做了

+0

你比較生產和發展的WebPack配置文件? –

+0

我知道我忘記了一些東西。 @AmanArora - 我正在使用Angular-CLI – simon

+0

導航/檢索數據時,您遇到了哪些錯誤? – DeborahK

回答

0

ng serve --prod角CLI使生產版本與樹搖晃和AOT(提前)編譯

意味着它樹搖所有組件,並添加了以往實際代碼中使用的,不是全部。這就是說,你看到vendor.js是真的有些當你做ng serve

你可以在cli文檔中詳細閱讀哪些構建正在做什麼。

+0

您好,感謝您的回覆。我已經知道了。我想要這種行爲。但是,我無法真正理解爲什麼Tree顫動會讓我的應用在服務器請求上崩潰。 **編輯:我所有的服務器請求都在服務文件(.ts擴展名)的「服務」文件夾中。 services文件夾在src/app裏面,而我有最新的角度cli。這聽起來好像它不包括我的服務,但我確實從服務器獲取錯誤代碼。 – simon

+0

嗯,兩個構建過程都不同,在我們的應用程序中也發生了同樣的事情。一些代碼在prod/aot build中顯示錯誤。所以我們先解決它們之前的代碼。 –

1

--prod是構建的選項,默認爲調試模式

讓我們看一個例子,爲什麼應用程序中斷,看到我們有這樣的代碼:

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

想象一下,組件上沒有定義toshow,或者錯誤地認爲我們輸入了錯字toShowtoshow

在這種情況下ng buildng serve工作,但ng build --prodng serve --prod會給錯誤

+0

ng服務後我沒有收到錯誤 - 生產。導航到使用我的服務文件的組件時,我收到錯誤(每個服務都有自己的通過承諾的get/post方法) – simon