使用--prod选项进行构建时行为上的差异

时间:2018-09-07 11:50:13

标签: angular

当我使用--Prod选项(ng build --prod)和不使用(ng build)构建以下代码时,我观察到行为上的差异。

在以下情况下,不会调用if else堆栈(带有instanceof检查):

  • 使用--prod选项编译项目

  • console.log语句已删除。

如果console.log保留并使用--prod选项构建,则代码可以正常工作。

在开发人员模式下运行时,无论是否有console.log,代码都可以正常工作。 (ng服务)

服务方法

 getTrends(porfolioId:string):Observable<Trend[]>{
return this._portfolioService
    .getPortfolioRef(porfolioId)
    .collection(this.collection_trends,ref=>{
      return ref.orderBy('date','desc').limit(100);
    })
    .snapshotChanges()
    .pipe(
      map(actions => {

        return actions.map(action => {

          let trend:Trend = new Trend();

          trend=action.payload.doc.data() as Trend;


          if(trend.date instanceof firestore.Timestamp){
            let ts:firestore.Timestamp=trend.date;
            trend.date=new Date(ts.toDate());
            console.log('trend.date (fs ts) converted to date'+trend.date);   
          }else{
            trend.date=new Date(trend.date);

          }

          return trend;
        })
      })
    );


}

没有Console.log的编译代码

e.prototype.getTrends = function(e) {
                    return this._portfolioService.getPortfolioRef(e).collection(this.collection_trends, function(e) {
                        return e.orderBy("date", "desc").limit(100)
                    }).snapshotChanges().pipe(Object(w.a)(function(e) {
                        return e.map(function(e) {
                            var t = new ne;
                            return t.date = (t = e.payload.doc.data()).date instanceof re.firestore.Timestamp ? new Date(t.date.toDate()) : new Date(t.date), t
                        })
                    }))
                }

使用Console.log编译的代码

return e.prototype.getTrends = function(e) {
                    return this._portfolioService.getPortfolioRef(e).collection(this.collection_trends, function(e) {
                        return e.orderBy("date", "desc").limit(100)
                    }).snapshotChanges().pipe(Object(w.a)(function(e) {
                        return e.map(function(e) {
                            var t = new ne;
                            return (t = e.payload.doc.data()).date instanceof re.firestore.Timestamp ? (t.date = new Date(t.date.toDate()), console.log("trend.date (fs ts) converted to date" + t.date)) : t.date = new Date(t.date), t
                        })
                    }))
                }

角度版本为6.0.6

行为不同的原因可能是什么,如何删除console.log?

0 个答案:

没有答案