2015-04-15 4 views
7

Ich benutze Angular 1.3.15, habe auch versucht 1.2.28, zusammen mit eckigen Bootstrap. Letzte Nacht, nachdem Chrome v42.0.2311.90 Aktualisierung, begann ich plötzlich Tonnen Winkel itkn Fehler zu sehen:Angular itkn Fehler durch Direktiven mit Funktion außerhalb Array definiert

Error: [$injector:itkn] Incorrect injection token! Expected service name as string, got function() 
http://errors.angularjs.org/1.3.15/$injector/itkn?p0=function%20() 
    at REGEX_STRING_REGEXP (angular.min.js?bust=undefined:63) 
    at Object.invoke (angular.min.js?bust=undefined:4189) 
    at angular.min.js?bust=undefined:6525 
    at forEach (angular.min.js?bust=undefined:323) 
    at Object.<anonymous> (angular.min.js?bust=undefined:6523) 
    at Object.invoke (angular.min.js?bust=undefined:4204) 
    at Object.enforcedReturnValue [as $get] (angular.min.js?bust=undefined:4056) 
    at Object.invoke (angular.min.js?bust=undefined:4204) 
    at angular.min.js?bust=undefined:4021 
    at Object.getService [as get] (angular.min.js?bust=undefined:4162) 

Dies ist nicht vor dem Update Chrome passiert war, aber ich denke, ich nicht, das ist sicher sagen kann verwandten .

.directive('modalTransclude', function() { 
    return { 
     // directive code 
    }; 
    }) 

führt dies itkn Fehler

:

Nach Stossen durch, habe ich, dass alle Richtlinien wie folgt definiert gefunden. Ich console.logged die key in der $inject Iterator in eckigen und es gibt die Funktion der Direktive selbst zurück, anstatt nur Strings wie eindeutig gemeint war.

Ich habe entdeckt, dass die Funktion in einem Array Einwickeln, auch ohne Strings, die die Injektionen zu definieren, ist es das Problem löst:

.directive('modalTransclude', [function() { 
    return { 
     // directive code 
    }; 
    }]) 

jedoch wird dieser Fehler nicht auf dem Winkel Bootstrap-Website geschieht, und Ich habe dies sowohl in den eckigen Versionen 1.3 und 1.2 versucht.

Ich werde weiterhin nach irgendwelchen Ursachen suchen, die für meine App einzigartig sind, aber hat jemand eine Idee, was das verursacht?

+0

gleiche Sache für mich auf Chrome geschieht, obwohl nur für meine bootstra p modale. Gerade getestet auf Firefox und sie scheinen dort zu arbeiten – alsco77

+0

Ich kann bestätigen, dass dieses Direktive-Problem nur meine eckigen Bootstrap-Sachen betrifft. Alle benutzerdefinierten Anweisungen, die ich selbst habe, funktionieren gut, ob mit oder ohne Klammern. – helion3

+0

Haben Sie http://ng-inspector.org/ in Ihrem Chrom installiert? Für mich, wenn ich ng-Inspector ausschalte, kehrt alles in den normalen Modus zurück. Nicht sicher, was genau der Grund dafür ist, habe keine Zeit, sich darauf einzulassen.Dieses Verhalten tauchte auch vor kurzem für mich auf. –

Antwort

7

Wenn Sie ng-inspector.org Erweiterung in Chrom installiert haben, könnte es ein Grund sein. Schalten Sie einfach die ng-inspector Browser-Erweiterung aus.

Ich weiß nicht genau, warum es gerade nicht mit ng-inspector funktioniert. Wenn jemand Zeit hat, sich das anzuschauen, wäre es nett, einen Fehler an das Projekt zu senden (ich vermute, es ist ng-Inspektor selbst).

+0

Dies ist in der Tat ein Problem mit Version v0.5.9 von ng-Inspector. Aktualisierung auf Version 0.5.10 (sollte automatisch beim Neustart von Chrome erfolgen oder Sie können das Update manuell auslösen, indem Sie auf chrome: // extensions/klicken und dann auf "Erweiterungen jetzt aktualisieren" klicken). Es tut mir schrecklich leid für alle, die von diesem Problem betroffen waren. – rev087

+0

Ich habe ein ähnliches Problem mit Batarang (0.10.7) festgestellt. $ Injektor ist nicht definiert. Das Deaktivieren der Erweiterung behebt es. ng-Inspector: Beim Versuch, eine Direktive aufzurufen, ist ein Fehler aufgetreten: myDirective TypeError: Die Eigenschaft 'invoke' von undefined (...) kann nicht gelesen werden. –

0

Es sollte funktionieren, ohne die eckigen Klammern zu definieren. Der einzige Grund für die eckigen Klammern ist die js-Verkleinerung.

AngularJs Directives Link

+0

Ich weiß. Aber die Verwendung der Klammern löst dieses Problem. Es ist nur ein Problem im aktuellen Chrome. Firefox/Safari scheint nicht betroffen zu sein. – helion3

2

Dies ist in der Tat ein Problem, das mit Version 0.9.9 von ng-Inspector (ich bin sein Betreuer), die gestern veröffentlicht wurde, aufgetaucht ist. Ich arbeite bereits an einer Lösung dafür und werde sie in Kürze veröffentlichen.

Tut mir schrecklich leid für die Unannehmlichkeiten = (

Edit: Soeben erschienen v0.5.10, sollte dieses Problem beheben Wenn Sie weiter auf Schwierigkeiten stoßen, fühlen sich frei, um ein Problem zu öffnen bei https://github.com/rev087/ng-inspector/

+0

Aktualisiert auf v0.5.10, funktioniert jetzt. Danke für die schnelle Antwort! –

+0

Danke für die Bestätigung! Ich fühle mich schrecklich für all die Leute, die Stunden verloren haben müssen, um ein Problem zu debuggen, für das sie nicht schuld waren = – rev087

Verwandte Themen