ionic-team / ionic-team/ionic-cli

ionic build --prod fails for firebase(even with blank app)

未關閉
#3,324 2 則留言 2 個 reaction 已指派 0 人 在 GitHub 檢視
triage
主要語言
TypeScript
星號
2k
分支
682
PR 合併指標
30 天內沒有已合併 PR

描述

**Description:**
After adding firebase(not angularfire2) **ionic build --prod** hangs after _copy finished_ step
The same work perfectly without --prod option. I'm using firebase auth, database and messaging in by PWA + Mobile Apps. All the features works perfectly in non-prod mode.

I even tried setting --max-old-space-size to 4GB but it still doesn't work.

**Steps to Reproduce:**
I have tried the same for blank ionic app.

1. Create new blank ionic app

`ionic start blank1 blank`

2. Need to add platform as ionic build needs atleast one platform

`ionic cordova add platform android`

3. build without --prod will be successful
`ionic build`

4. build with --prod will also be successful
`ionic build --prod`

5. Now add firebase
`npm i -s firebase`

6. add firebase imports
As mentioned at https://www.npmjs.com/package/firebase#include-only-the-features-you-need
I have used the below code to import firebase app, auth database and messaging:
````
// This import loads the firebase namespace along with all its type information.
import firebase from 'firebase/app';

// These imports load individual services into the firebase namespace.
import 'firebase/auth';
import 'firebase/database';
import 'firebase/messaging';
````
I've added these imports in home.ts as:

````
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
// This import loads the firebase namespace along with all its type information.
import firebase from 'firebase/app';

// These imports load individual services into the firebase namespace.
import 'firebase/auth';
import 'firebase/database';
import 'firebase/messaging';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
ts: any ='';
constructor(public navCtrl: NavController) {
this.ts = firebase.database.ServerValue.TIMESTAMP;// To avoid unnecessary warning: unused import firebase
}
}
````

7. build without --prod will be successful
`ionic build`

8. build with --prod will now fail
`ionic build --prod`

**Output:**
````
c:\xampp\htdocs\blank1>ionic build --prod
Running app-scripts build: --prod
[20:11:41] build prod started ...
[20:11:41] clean started ...
[20:11:41] clean finished in less than 1 ms
[20:11:41] copy started ...
[20:11:41] deeplinks started ...
[20:11:42] deeplinks finished in 32 ms
[20:11:42] ngc started ...
[20:11:50] ngc finished in 8.87 s
[20:11:50] preprocess started ...
[20:11:50] preprocess finished in less than 1 ms
[20:11:50] webpack started ...
[20:11:51] copy finished in 9.42 s
````

**My `ionic info`:**
```
c:\xampp\htdocs\blank1>ionic info

cli packages: (C:\Users\Desk06\AppData\Roaming\npm\node_modules)

@ionic/cli-utils : 1.19.2
ionic (Ionic CLI) : 3.20.0

global packages:

cordova (Cordova CLI) : 8.0.0

local packages:

@ionic/app-scripts : 3.1.10
Cordova Platforms : android 7.0.0
Ionic Framework : ionic-angular 3.9.2

System:

Android SDK Tools : 26.1.1
Node : v8.11.1
npm : 6.0.1
OS : Windows 10

Environment Variables:

ANDROID_HOME : E:\android_sdks

Misc:

backend : pro
```
**Other Information:**
```
c:\xampp\htdocs\blank1>ionic build
Running app-scripts build:
[20:03:52] build dev started ...
[20:03:52] clean started ...
[20:03:52] clean finished in 16 ms
[20:03:52] copy started ...
[20:03:53] deeplinks started ...
[20:03:53] deeplinks finished in 15 ms
[20:03:53] transpile started ...
[20:03:57] transpile finished in 4.26 s
[20:03:57] preprocess started ...
[20:03:57] preprocess finished in 1 ms
[20:03:57] webpack started ...
[20:03:57] copy finished in 4.48 s
[20:04:04] webpack finished in 6.71 s
[20:04:04] sass started ...
Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.
[20:04:05] sass finished in 1.48 s
[20:04:05] postprocess started ...
[20:04:05] postprocess finished in 15 ms
[20:04:05] lint started ...
[20:04:05] build dev finished in 12.71 s
> ionic cordova prepare --no-build
> cordova prepare
Android Studio project detected

[20:04:11] lint finished in 6.09 s

c:\xampp\htdocs\blank1>ionic build --prod
Running app-scripts build: --prod
[20:04:28] build prod started ...
[20:04:28] clean started ...
[20:04:28] clean finished in less than 1 ms
[20:04:28] copy started ...
[20:04:28] deeplinks started ...
[20:04:28] deeplinks finished in 16 ms
[20:04:28] ngc started ...
[20:04:37] ngc finished in 8.62 s
[20:04:37] preprocess started ...
[20:04:37] preprocess finished in less than 1 ms
[20:04:37] webpack started ...
[20:04:37] copy finished in 9.10 s
[20:05:06] webpack finished in 28.59 s
[20:05:06] uglify started ...
[20:05:06] sass started ...
Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.
[20:05:07] sass finished in 1.73 s
[20:05:07] cleancss started ...
[20:05:10] cleancss finished in 2.50 s
[20:05:21] uglify finished in 15.87 s
[20:05:21] postprocess started ...
[20:05:21] postprocess finished in less than 1 ms
[20:05:21] lint started ...
[20:05:21] build prod finished in 53.26 s
> ionic cordova prepare --no-build
> cordova prepare
Android Studio project detected

[20:05:28] lint finished in 6.48 s

c:\xampp\htdocs\blank1>npm i -s firebase
[grpc] Success: "c:\xampp\htdocs\blank1\node_modules\grpc\src\node\extension_binary\node-v57-win32-x64-unknown\grpc_node.node" is installed via remote
+ firebase@5.1.0
added 110 packages from 59 contributors in 42.995s
[!] 1 vulnerability found [3788 packages audited]
Severity: 1 Low
Run `npm audit` for more detail

c:\xampp\htdocs\blank1>ionic build
Running app-scripts build:
[20:10:52] build dev started ...
[20:10:52] clean started ...
[20:10:52] clean finished in 16 ms
[20:10:52] copy started ...
[20:10:53] deeplinks started ...
[20:10:53] deeplinks finished in 31 ms
[20:10:53] transpile started ...
[20:10:57] transpile finished in 4.59 s
[20:10:57] preprocess started ...
[20:10:57] preprocess finished in less than 1 ms
[20:10:57] webpack started ...
[20:10:57] copy finished in 4.86 s
[20:11:04] webpack finished in 7.35 s
[20:11:04] sass started ...
Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.
[20:11:06] sass finished in 1.81 s
[20:11:06] postprocess started ...
[20:11:06] postprocess finished in 47 ms
[20:11:06] lint started ...
[20:11:06] build dev finished in 14.10 s
> ionic cordova prepare --no-build
> cordova prepare
[20:11:13] lint finished in 6.97 s
Android Studio project detected

c:\xampp\htdocs\blank1>ionic build --prod
Running app-scripts build: --prod
[20:11:41] build prod started ...
[20:11:41] clean started ...
[20:11:41] clean finished in less than 1 ms
[20:11:41] copy started ...
[20:11:41] deeplinks started ...
[20:11:42] deeplinks finished in 32 ms
[20:11:42] ngc started ...
[20:11:50] ngc finished in 8.87 s
[20:11:50] preprocess started ...
[20:11:50] preprocess finished in less than 1 ms
[20:11:50] webpack started ...
[20:11:51] copy finished in 9.42 s

```

貢獻指南

開啟貢獻指南

研究方向

Reproduce the listed blank Ionic app with firebase@5.1.0 and compare `ionic build` with `ionic build --prod`. Start with the production build stages shown in the output, especially webpack and uglify; done means the production build completes instead of stopping after `copy finished`.

由索引模型根據 Issue 內容生成。

評估

技術堆疊
angular, firebase, typescript
領域
build-system, cli
Issue 類型
缺陷
難度
4/5
預估耗時
3-5 天
活躍度
停滯
描述清晰度
基本清楚
新手友好度
25/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。