Skip to content
This repository has been archived by the owner on Nov 5, 2019. It is now read-only.

WIP: uglify #27

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

WIP: uglify #27

wants to merge 1 commit into from

Conversation

shuhei
Copy link
Owner

@shuhei shuhei commented Mar 5, 2016

With uglified bundle.js:

EXCEPTION: Error during evaluation of "click"
EXCEPTION: Error during evaluation of "click"t.logError @ compiler.ts:1t.logGroup @ compiler.ts:1e.call @ compiler.ts:1(anonymous function) @ common.ts:4e._notifyOnError @ compiler.ts:1n.StringMapWrapper.merge.onError @ compiler.ts:1e.run @ angular2-polyfills.min.js:1(anonymous function) @ compiler.ts:1e.run @ compiler.ts:1i @ compiler.ts:5e.run @ angular2-polyfills.min.js:1(anonymous function) @ angular2-polyfills.min.js:1
ORIGINAL EXCEPTION: TypeError: this.directive_1_0.onClick is not a functiont.logError @ compiler.ts:1e.call @ compiler.ts:1(anonymous function) @ common.ts:4e._notifyOnError @ compiler.ts:1n.StringMapWrapper.merge.onError @ compiler.ts:1e.run @ angular2-polyfills.min.js:1(anonymous function) @ compiler.ts:1e.run @ compiler.ts:1i @ compiler.ts:5e.run @ angular2-polyfills.min.js:1(anonymous function) @ angular2-polyfills.min.js:1
ORIGINAL STACKTRACE:t.logError @ compiler.ts:1e.call @ compiler.ts:1(anonymous function) @ common.ts:4e._notifyOnError @ compiler.ts:1n.StringMapWrapper.merge.onError @ compiler.ts:1e.run @ angular2-polyfills.min.js:1(anonymous function) @ compiler.ts:1e.run @ compiler.ts:1i @ compiler.ts:5e.run @ angular2-polyfills.min.js:1(anonymous function) @ angular2-polyfills.min.js:1
TypeError: this.directive_1_0.onClick is not a function
    at e.ChangeDetector_A_0.handleEventInternal (viewFactory_A:322)
    at e.handleEvent (common.ts:4)
    at e.triggerEventHandlers (compiler.ts:1)
    at eval (viewFactory_A:409)
    at compiler.ts:5
    at compiler.ts:5
    at e.run (angular2-polyfills.min.js:1)
    at e.run (compiler.ts:1)
    at e.run (compiler.ts:1)
    at HTMLAnchorElement.i (compiler.ts:5)t.logError @ compiler.ts:1e.call @ compiler.ts:1(anonymous function) @ common.ts:4e._notifyOnError @ compiler.ts:1n.StringMapWrapper.merge.onError @ compiler.ts:1e.run @ angular2-polyfills.min.js:1(anonymous function) @ compiler.ts:1e.run @ compiler.ts:1i @ compiler.ts:5e.run @ angular2-polyfills.min.js:1(anonymous function) @ angular2-polyfills.min.js:1
ERROR CONTEXT:t.logError @ compiler.ts:1e.call @ compiler.ts:1(anonymous function) @ common.ts:4e._notifyOnError @ compiler.ts:1n.StringMapWrapper.merge.onError @ compiler.ts:1e.run @ angular2-polyfills.min.js:1(anonymous function) @ compiler.ts:1e.run @ compiler.ts:1i @ compiler.ts:5e.run @ angular2-polyfills.min.js:1(anonymous function) @ angular2-polyfills.min.js:1
e {element: a, componentElement: hello-app, context: A, locals: Object, injector: e}

@shuhei
Copy link
Owner Author

shuhei commented Mar 5, 2016

It seems like signatures in generated code for change detection don't match with uglified code.

The generated code where the error occurred (viewFactory_A):

(function(exports,styles,resolvedMetadataCache,e,D,viewFactory_D0,AbstractChangeDetector,ChangeDetectionUtil,ChangeDetectorState,AppProtoView,AppProtoElement,ViewType,AppView,AppElement,flattenNestedViewRenderNodes,checkSlotCount
/**/) {

      var ChangeDetector_A_0 = function ChangeDetector_A_0() {
        AbstractChangeDetector.call(
            this, "A_0", 12,
            ChangeDetector_A_0.gen_propertyBindingTargets, ChangeDetector_A_0.gen_directiveIndices,
            5);
        this.dehydrateDirectives(false);
      }

      ChangeDetector_A_0.prototype = Object.create(AbstractChangeDetector.prototype);

      ChangeDetector_A_0.prototype.detectChangesInRecordsInternal = function(throwOnChange) {
        var l_context = this.context,l_literal0,c_literal0,l_arrayFn11,l_visibleHref2,l_isRouteActive3,l_literal4,c_literal4,l_literal5,c_literal5,l_mapFnname6,c_mapFnname6,l_arrayFn27,l_visibleHref8,l_isRouteActive9,l_literal10,l_literal11;c_literal0=c_literal4=c_literal5=c_mapFnname6 = false;
        var isChanged = false;
        var changes = null;


        this.propertyBindingIndex = 0;

      l_literal0 = "/Hello";


        if (throwOnChange && !ChangeDetectionUtil.devModeEqual(this.literal0, l_literal0)) {
          this.throwOnChangeError(this.literal0, l_literal0);
        }

      if (ChangeDetectionUtil.looseNotIdentical(this.literal0, l_literal0)) {
        c_literal0 = true


        this.literal0 = l_literal0;
      }






        if (c_literal0) { 
      l_arrayFn11 = ChangeDetectionUtil.arrayFn1(l_literal0);


        if (throwOnChange && !ChangeDetectionUtil.devModeEqual(this.arrayFn11, l_arrayFn11)) {
          this.throwOnChangeError(this.arrayFn11, l_arrayFn11);
        }

      if (ChangeDetectionUtil.looseNotIdentical(this.arrayFn11, l_arrayFn11)) {


        this.directive_0_0.routeParams = l_arrayFn11;

        isChanged = true;


        this.arrayFn11 = l_arrayFn11;
      }
     }

      changes = null;

      isChanged = false;




        this.propertyBindingIndex = 1;

      l_visibleHref2 = this.directive_0_0.visibleHref;


        if (throwOnChange && !ChangeDetectionUtil.devModeEqual(this.visibleHref2, l_visibleHref2)) {
          this.throwOnChangeError(this.visibleHref2, l_visibleHref2);
        }

      if (ChangeDetectionUtil.looseNotIdentical(this.visibleHref2, l_visibleHref2)) {


        this.notifyDispatcher(l_visibleHref2);



        this.visibleHref2 = l_visibleHref2;
      }





        this.propertyBindingIndex = 2;

      l_isRouteActive3 = this.directive_0_0.isRouteActive;


        if (throwOnChange && !ChangeDetectionUtil.devModeEqual(this.isRouteActive3, l_isRouteActive3)) {
          this.throwOnChangeError(this.isRouteActive3, l_isRouteActive3);
        }

      if (ChangeDetectionUtil.looseNotIdentical(this.isRouteActive3, l_isRouteActive3)) {


        this.notifyDispatcher(l_isRouteActive3);



        this.isRouteActive3 = l_isRouteActive3;
      }


      changes = null;

      isChanged = false;




        this.propertyBindingIndex = 3;

      l_literal4 = "/Ciao";


        if (throwOnChange && !ChangeDetectionUtil.devModeEqual(this.literal4, l_literal4)) {
          this.throwOnChangeError(this.literal4, l_literal4);
        }

      if (ChangeDetectionUtil.looseNotIdentical(this.literal4, l_literal4)) {
        c_literal4 = true


        this.literal4 = l_literal4;
      }







      l_literal5 = "ng2";


        if (throwOnChange && !ChangeDetectionUtil.devModeEqual(this.literal5, l_literal5)) {
          this.throwOnChangeError(this.literal5, l_literal5);
        }

      if (ChangeDetectionUtil.looseNotIdentical(this.literal5, l_literal5)) {
        c_literal5 = true


        this.literal5 = l_literal5;
      }






        if (c_literal5) { 
      l_mapFnname6 = ChangeDetectionUtil.mapFn(["name"])(l_literal5);


        if (throwOnChange && !ChangeDetectionUtil.devModeEqual(this.mapFnname6, l_mapFnname6)) {
          this.throwOnChangeError(this.mapFnname6, l_mapFnname6);
        }

      if (ChangeDetectionUtil.looseNotIdentical(this.mapFnname6, l_mapFnname6)) {
        c_mapFnname6 = true


        this.mapFnname6 = l_mapFnname6;
      }
     } else { l_mapFnname6 = this.mapFnname6; }





        if (c_literal4 || c_mapFnname6) { 
      l_arrayFn27 = ChangeDetectionUtil.arrayFn2(l_literal4, l_mapFnname6);


        if (throwOnChange && !ChangeDetectionUtil.devModeEqual(this.arrayFn27, l_arrayFn27)) {
          this.throwOnChangeError(this.arrayFn27, l_arrayFn27);
        }

      if (ChangeDetectionUtil.looseNotIdentical(this.arrayFn27, l_arrayFn27)) {


        this.directive_1_0.routeParams = l_arrayFn27;

        isChanged = true;


        this.arrayFn27 = l_arrayFn27;
      }
     }

      changes = null;

      isChanged = false;




        this.propertyBindingIndex = 4;

      l_visibleHref8 = this.directive_1_0.visibleHref;


        if (throwOnChange && !ChangeDetectionUtil.devModeEqual(this.visibleHref8, l_visibleHref8)) {
          this.throwOnChangeError(this.visibleHref8, l_visibleHref8);
        }

      if (ChangeDetectionUtil.looseNotIdentical(this.visibleHref8, l_visibleHref8)) {


        this.notifyDispatcher(l_visibleHref8);



        this.visibleHref8 = l_visibleHref8;
      }





        this.propertyBindingIndex = 5;

      l_isRouteActive9 = this.directive_1_0.isRouteActive;


        if (throwOnChange && !ChangeDetectionUtil.devModeEqual(this.isRouteActive9, l_isRouteActive9)) {
          this.throwOnChangeError(this.isRouteActive9, l_isRouteActive9);
        }

      if (ChangeDetectionUtil.looseNotIdentical(this.isRouteActive9, l_isRouteActive9)) {


        this.notifyDispatcher(l_isRouteActive9);



        this.isRouteActive9 = l_isRouteActive9;
      }


      changes = null;

      isChanged = false;




        this.propertyBindingIndex = 6;

      l_literal10 = "GitHub";


        if (throwOnChange && !ChangeDetectionUtil.devModeEqual(this.literal10, l_literal10)) {
          this.throwOnChangeError(this.literal10, l_literal10);
        }

      if (ChangeDetectionUtil.looseNotIdentical(this.literal10, l_literal10)) {


        this.directive_3_0.name = l_literal10;

        isChanged = true;


        this.literal10 = l_literal10;
      }





        this.propertyBindingIndex = 7;

      l_literal11 = "https://github.com/shuhei/babel-angular2-app";


        if (throwOnChange && !ChangeDetectionUtil.devModeEqual(this.literal11, l_literal11)) {
          this.throwOnChangeError(this.literal11, l_literal11);
        }

      if (ChangeDetectionUtil.looseNotIdentical(this.literal11, l_literal11)) {


        this.directive_3_0.url = l_literal11;

        isChanged = true;


        this.literal11 = l_literal11;
      }


      changes = null;

      isChanged = false;



      }


        ChangeDetector_A_0.prototype.handleEventInternal = function(eventName, elIndex, locals) {
          var preventDefault = false;
          var l_context = this.context,l_onClick0_0,l_onClick0_1;

    if (eventName === "click" && elIndex === 0) {

l_onClick0_0 = this.directive_0_0.onClick();
if (l_onClick0_0 === false) { preventDefault = true};
    }

    if (eventName === "click" && elIndex === 1) {

l_onClick0_1 = this.directive_1_0.onClick();
if (l_onClick0_1 === false) { preventDefault = true};
    }
          return preventDefault;
        }






      ChangeDetector_A_0.prototype.hydrateDirectives = function(directives) {
      this.directive_0_0 = this.getDirectiveFor(directives, 0);
this.directive_1_0 = this.getDirectiveFor(directives, 1);
this.directive_2_0 = this.getDirectiveFor(directives, 2);
this.directive_3_0 = this.getDirectiveFor(directives, 3);

    }

      ChangeDetector_A_0.prototype.dehydrateDirectives = function(destroyPipes) {
        if (destroyPipes) {


        }
        this.literal0 = this.arrayFn11 = this.visibleHref2 = this.isRouteActive3 = this.literal4 = this.literal5 = this.mapFnname6 = this.arrayFn27 = this.visibleHref8 = this.isRouteActive9 = this.literal10 = this.literal11 = this.directive_0_0 = this.directive_1_0 = this.directive_2_0 = this.directive_3_0 = ChangeDetectionUtil.uninitialized;
    }

      ChangeDetector_A_0.gen_propertyBindingTargets = [ChangeDetectionUtil.bindingTarget("directive", 0, "routeParams", null, "['/Hello'] in A@2:13"), ChangeDetectionUtil.bindingTarget("elementAttribute", 0, "href", null, "visibleHref in A@2:10"), ChangeDetectionUtil.bindingTarget("elementClass", 0, "router-link-active", null, "isRouteActive in A@2:10"), ChangeDetectionUtil.bindingTarget("directive", 1, "routeParams", null, "['/Ciao', { name: 'ng2' }] in A@3:13"), ChangeDetectionUtil.bindingTarget("elementAttribute", 1, "href", null, "visibleHref in A@3:10"), ChangeDetectionUtil.bindingTarget("elementClass", 1, "router-link-active", null, "isRouteActive in A@3:10"), ChangeDetectionUtil.bindingTarget("directive", 3, "name", null, "GitHub in "), ChangeDetectionUtil.bindingTarget("directive", 3, "url", null, "https://github.com/shuhei/babel-angular2-app in ")];

      ChangeDetector_A_0.gen_directiveIndices = [ChangeDetectionUtil.directiveIndex(0, 0), ChangeDetectionUtil.directiveIndex(1, 0), ChangeDetectionUtil.directiveIndex(2, 0), ChangeDetectionUtil.directiveIndex(3, 0)];

var appProtoEl0_A = AppProtoElement.create(
        resolvedMetadataCache,
        0,
        {},
        [e],
        {}
      );
var appProtoEl1_A = AppProtoElement.create(
        resolvedMetadataCache,
        1,
        {},
        [e],
        {}
      );
var appProtoEl2_A = AppProtoElement.create(
        resolvedMetadataCache,
        2,
        {},
        [e],
        {}
      );
var appProtoEl3_A = AppProtoElement.create(
        resolvedMetadataCache,
        3,
        {'name':'GitHub','url':'https://github.com/shuhei/babel-angular2-app'},
        [D],
        {}
      );
var appProtoView4_A0 = AppProtoView.create(resolvedMetadataCache, 1, [], {});
var renderType22_A = null;
var styles23_A = styles;

function viewFactory_A0(parentRenderer,viewManager,containerEl,projectableNodes,rootSelector,dynamicallyCreatedProviders,rootInjector){
  if (renderType22_A == null) {
        renderType22_A = viewManager.createRenderComponentType(2, styles23_A);
      }
  var renderer = parentRenderer.renderComponent(renderType22_A);
  var view = new AppView(
    appProtoView4_A0, renderer, viewManager,
    projectableNodes,
    containerEl,
    dynamicallyCreatedProviders, rootInjector,
    function() { return new ChangeDetector_A_0(); }()
  );
  checkSlotCount('A', 0, projectableNodes);
  var parentRenderNode = renderer.createViewRoot(view.containerAppElement.nativeElement);
  var render0_A = renderer.createText(parentRenderNode, '\n    ');
var render1_A = renderer.createElement(parentRenderNode, 'ul');
var render2_A = renderer.createText(render1_A, '\n      ');
var render3_A = renderer.createElement(render1_A, 'li');
var render4_A = renderer.createElement(render3_A, 'a');
var disposable5_A = renderer.listen(render4_A, 'click', function (event) { return view.triggerEventHandlers('click', event, 0); });
var render7_A = renderer.createText(render4_A, 'Hello');
var render8_A = renderer.createText(render1_A, '\n      ');
var render9_A = renderer.createElement(render1_A, 'li');
var render10_A = renderer.createElement(render9_A, 'a');
var disposable11_A = renderer.listen(render10_A, 'click', function (event) { return view.triggerEventHandlers('click', event, 1); });
var render13_A = renderer.createText(render10_A, 'Ciao');
var render14_A = renderer.createText(render1_A, '\n    ');
var render15_A = renderer.createText(parentRenderNode, '\n    ');
var render16_A = renderer.createElement(parentRenderNode, 'router-outlet');
var render18_A = renderer.createText(parentRenderNode, '\n    ');
var render19_A = renderer.createElement(parentRenderNode, 'linker');
renderer.setElementAttribute(render19_A, 'name', 'GitHub');
renderer.setElementAttribute(render19_A, 'url', 'https://github.com/shuhei/babel-angular2-app');
var render21_A = renderer.createText(parentRenderNode, '\n  ');
  var app6_A = new AppElement(appProtoEl0_A, view,
      null, render4_A, null);
var app12_A = new AppElement(appProtoEl1_A, view,
      null, render10_A, null);
var app17_A = new AppElement(appProtoEl2_A, view,
      null, render16_A, null);
var app20_A = new AppElement(appProtoEl3_A, view,
      null, render19_A, null);
viewFactory_D0(renderer, viewManager, app20_A, [], null, null, null);

  view.init(([]), [render0_A,render1_A,render2_A,render3_A,render4_A,render7_A,render8_A,render9_A,render10_A,render13_A,render14_A,render15_A,render16_A,render18_A,render19_A,render21_A], [disposable5_A,disposable11_A],
            [app6_A,app12_A,app17_A,app20_A]);
  return view;
}
return viewFactory_A0
})

@shuhei
Copy link
Owner Author

shuhei commented Mar 5, 2016

Minification still doesn't work on the official bundles?

angular/angular#6380

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant