Angular 4 ng服务--prod vs ng服务

sim*_*mon 8 javascript typescript webpack angular-cli angular

不久,我有一个应用程序,在服务上是4.6MB.

当我做:

ng serve --prod

我得到1MB的文件大小.

但是,--prod以某种方式使我的整个应用程序中断.

我向服务器发送请求的整个服务(基于承诺)不再有效.

bizzar的事情是,只要没有服务器请求,简单的ng服务工作完全正常ng服务的某些部分--prod工作正常.

我没有发布任何代码,因为ng服务版本工作正常.

主要问题是:

为什么我会采取帽子行为?

此外,在某些时候,基于ng服务的应用程序--prod突然完全无处不在,然后我重新启动应用程序,再次,一个破碎的应用程序.

编辑: 更多EXPLICIT细节:

我正在使用Fiddler确保所有细节都正确无误:

提琴手图片

如您所见,细节还可以.

现在负责在客户端模拟该请求的代码:

    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);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

现在注意当我只使用ng服务时,一切都很完美(网络选项卡):

服务

如您所见,我已经登录,但我得到了回复.

现在,

我做的那一刻

ng serve --prod

突然,具有相同详细信息的相同登录请求不再起作用:

ng serve --prod

这是超级bizzar.

我负责服务器请求的所有方法都是一样的.

"错误请求",其中包含一些来自服务器本身的错误代码(我自己的服务器代码,如"电子邮件未填写",这也是bizzar,因为我发送了正确的参数)

Ani*_*Das 6

当您执行ng serve --prodangular cli时,使用摇树和 AOT(Ahead Of Time)编译进行生产构建,并生成比正常构建更少的代码。您还可以在本地运行 prod 模式下的样子

意味着它会摇动您的所有组件并添加在您的代码中实际使用过的组件,而不是全部。这就是为什么vendor.js当你这样做时你会看到它真的很小ng serve --prod

缺点是它的可调试性较低,因为它的编译和缩小代码

您可以在构建正在做什么的 cli 文档中详细阅读。