Grunt build verursacht, dass Angular App auf dist abstürzt

8

Ich benutze Grunt und führe cmd "grunt build" aus, um einen Distributionsordner zu erstellen, der eine AngularJS-App enthält.

Als Standalone funktioniert meine App gut. Sobald ich eine Distribution für die App erstellt habe, stürzt die App ziemlich schnell ab.

Ich sehe in F12 Tools Console ist:

10 $ digest () Iterationen erreicht. Abbrechen!

Ich bin verdächtig auf eine Datei in meinem .tmp-Verzeichnis namens vendor.js und einen Fehler beim Minifizieren, Hellen und / oder Konkretieren dieser Datei wegen Controller-Abhängigkeitsinjektionsvariablen, die injizierte Controller-Argumente wie "$ scope" bis "a" vermischen zum Beispiel, obwohl ich ngAnnotate verwende.

Siehe Ich benutze UglifyJs und rufe ngAnnotate vor Uglify und Concat auf, aber ich kann UglifyJs nicht aus useMinPrepare entfernen oder ich habe andere Fehler, wie das Skriptverzeichnis, das nicht einmal in meinem dist-Verzeichnis erstellt wurde:

%Vor%

Ich setze mangle = false in meine GruntJs-Datei, aber ich bin misstrauisch gegenüber useMinPrepare js: ['concat', 'uglifyjs'] ändert die Reihenfolge der Ausführung und führt uglify aus, bevor ngAnnotate ausgeführt werden kann, wenn useMin aufgerufen wird, obwohl ich useMin nach% aufruft co_de%.

Ich bin neu bei Grunt und diese App wurde mir von einem anderen Entwickler übergeben.

Ich fand diesen Artikel, der für mich keinen Sinn macht und auch keine Codeänderung, die auf meine Gruntfile.js zutreffen scheint, aber ich dachte mir, dass ich vielleicht etwas machen würde:

Ссылка

Ich habe die Option "Uglify mangle" auf "false" gesetzt, aber das Problem wurde nicht behoben.

Hier ist mein Gruntfile.js Code:

%Vor%     
Brian Ogden 07.04.2015, 22:23
quelle

2 Antworten

2

Also bin ich den falschen Weg gegangen und dachte, Glättung sei falsch mit Uglify oder concat oder minification.

Der Fehler trat nicht mit grunt serve auf, trat jedoch erst auf, nachdem ein dist-Paket mit grunt build:dist

erstellt wurde

Es hat also in einem gewissen Sinne getäuscht, dass meine Angular-App gut funktioniert hat, bis ich ein dist-Paket erstellt habe.

Das Problem war für mich, dass ich ursprünglich ein <ng-include src="'scripts/navigation/navigationMobile.html'"></ng-include> -Element in meiner Index.html-Datei hatte.

Irgendwann habe ich eine benutzerdefinierte Elementrichtlinie <my-nav></my-nav> erstellt, die dieselbe templateUrl = scripts/navigation/navigationMobile.html verwendet, aber ich habe vergessen, das <ng-include src="'scripts/navigation/navigationMobile.html'"></ng-include> Element aus meiner Index.html zu entfernen, das <my-nav></my-nav> ersetzen sollte.

Aus irgendeinem Grund haben die 10 $ digest () Iterationen erreicht. Abbrechen! kam erst nach dem Ausführen von grunt build und dem Erstellen der minimierten, Uglified vendor.js-Datei auf. Sie trat nicht beim Entwickeln und Testen mit grunt serve auf, aber ich weiß nicht genau, warum der Fehler nur aufgetreten ist selbst nach grunt build .

Vielleicht kann jemand das beantworten.

    
Brian Ogden 11.04.2015, 20:28
quelle
1

Ich bemerkte, dass wir in zwei Fällen einen Hinweis auf ng-Annotate geben müssen:

  • Subclassing (ES6-Klasse), wenn Superklasse injectables für Konstruktor und Subklasse hat keinen Konstruktor;
  • $ get Methode eines Providers

Der Fehler bei der Digest-Überprüfung tritt bei einer Aufgabe auf, die nur in grunt build ausgeführt wird, oder steht im Zusammenhang mit der Erstellung einer Direktive aus einem ng-include.

Wenn Sie von ng-include wechseln, um es als Vorlage Ihrer Anweisung zu verwenden, wird angular die Kompilierung bis zum nächsten Digest anhalten, wenn die Vorlage schließlich geladen wird, selbst wenn sie bereits in $ templateCache ist.

Referenz: Ссылка $ kompilieren (siehe templateUrl)

Als letzte Anmerkung hätte ich einen Blick auf ngtemplates werfen müssen, da es Anfragen über den Draht vermeidet und eckige Vorlagen nicht in der richtigen Reihenfolge kompiliert, wenn sie von einer externen Ressource kommen. Das könnte ein Fehler in Ihrer Implementierung sein dieser Anweisung oder eines ihrer Eltern, die $ nicht korrekt aufruft.

    
André Werlang 17.04.2015 01:41
quelle