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

时间:2017-08-29 18:42:23

标签: javascript angular typescript webpack angular-cli

很快,我有一个应用程序,这是一个4.6MB的服务。

当我这样做时:

  

ng serve --prod

我的文件大小为1MB。

然而,--prod以某种方式使我的整个应用程序中断。

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

bizzar的事情是, ng服务完全正常 ng服务 - 某些的某些部分也正常工作,如只要没有服务器请求。

我没有发布任何代码,因为 ng serve 版本可以正常工作。

主要问题是:

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

此外,在某些时候,基于 ng serve --prod 的应用程序突然完全无处不在,然后在我重新启动应用程序之后,又一次破坏了应用程序。

编辑: 更多详情

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

Fiddler pic

如您所见,细节还可以。

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

    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 时,一切都运作正常(网络标签):

ng serve

如您所见,我已登录,但确实收到了回复。

现在,

我做的那一刻

  

ng serve --prod

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

ng serve --prod

这是超级bizzar。

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

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

3 个答案:

答案 0 :(得分:1)

--prod是构建选项,默认是调试模式

让我们看一个应用程序中断的示例,看看我们有这样的代码:

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

想象一下,toshow没有在组件上定义,或者我们错误地说了toShowtoshow

在这种情况下,ng buildng serve会有效,但ng build --prodng serve --prod会出错

答案 1 :(得分:0)

当你ng serve --prod使用角度cli进行生成构建时,使用树摇动和AOT(Ahead Of Time)编译

意味着树摇动所有组件并添加实际使用的代码,而不是全部。这就是你在ng serve

时看到vendor.js的确如此

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

答案 2 :(得分:0)

我们也遇到了类似的问题,并遵循这些指导原则。问题是AOT不支持JIT支持的一些功能。请检查此链接。希望它会对你有所帮助。

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

Angular DOC About AOT Restrictions