2015-04-15 10 views
7

Używam Angulara 1.3.15, również wypróbowałem 1.2.28, wraz z kątowym bootstrapem. Ostatniej nocy, po aktualizacji Chrome v42.0.2311.90, nagle zaczął widząc ton kątowych błędów itkn:Błąd kątowy itkn spowodowany przez dyrektywy zdefiniowane za pomocą funkcji poza tablicą

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) 

To nie dzieje się przed aktualizacją Chrome, ale myślę, że nie można powiedzieć, że na pewno związane .

Po wywiercenie poprzez, Znalazłem, że wszelkie dyrektywy zdefiniowane następująco:

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

Spowoduje to itkn błąd. Konsumowałem. key w iteratorze $inject w kanciastym i zwraca on funkcję samej dyrektywy, a nie tylko takie łańcuchy, jak to było wyraźnie zamierzone.

Odkryłam, że owijanie funkcję w tablicy, nawet bez strun określających zastrzyki, to rozwiązuje problem:

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

Jednak ten błąd nie dzieje się na miejscu kątowej bootstrap i Próbowałem tego w obu wersjach kątowych 1.3 i 1.2.

Będę nadal poszukiwał przyczyn, które są unikalne dla mojej aplikacji, ale czy ktoś ma pojęcie, co to powoduje?

+0

samo dzieje się dla mnie w Chrome, chociaż tylko dla mojej bootstra modemy p. Właśnie testowałem na Firefoksie i wygląda na to, że tam pracuję. – alsco77

+0

Mogę potwierdzić, że ten problem z dyrektywą dotyczy tylko moich kątowych rzeczy związanych z bootstrapem. Wszelkie własne dyrektywy, które mam sam, działają bez zarzutu, bez względu na to, czy mają nawiasy klamrowe czy nie. – helion3

+0

Czy masz zainstalowany http://ng-inspector.org/ w swoim chrome? Dla mnie, jeśli wyłączysz inspektora ng, wszystko wróci do normalnego trybu. Nie jestem pewien, co jest tego przyczyną, nie mam czasu, aby się w to zagłębić.Takie zachowanie pojawiło się również niedawno dla mnie. –

Odpowiedz

7

Jeśli zainstalowano ng-inspector.org rozszerzenie w chromie, że to może być powód. Wystarczy wyłączyć rozszerzenie przeglądarki ng-inspector.

Nie znam dokładnych powodów, dla których nie działa obecnie inspektor ng. Jeśli ktoś ma na to czas, dobrze byłoby zgłosić błąd do projektu (podejrzewam, że jest to ng-inspector).

+0

Jest to rzeczywiście problem z wersją v0.5.9 inspektora ng. Aktualizacja do wersji v0.5.10 (powinna nastąpić automatycznie po ponownym uruchomieniu przeglądarki Chrome lub aktywować aktualizację ręcznie, otwierając chrome: // extensions/i klikając "Aktualizuj rozszerzenia teraz"). Jest mi strasznie przykro z powodu wszystkich osób dotkniętych tym problemem. – rev087

+0

Zauważyłem podobny problem z włączoną wersją Batarang (0.10.7). Wtryskiwacz $ jest niezdefiniowany. Wyłączenie rozszerzenia naprawia to. ng-inspector: Wystąpił błąd podczas próby wywołania dyrektywy: myDirective TypeError: Nie można odczytać właściwości 'invoke' z undefined (...) –

0

Powinien działać, bez definiowania nawiasów kwadratowych. Jedynym powodem nawiasów kwadratowych jest min. Js.

AngularJs Directives Link

+0

Wiem. Ale użycie nawiasów rozwiązuje ten problem. To tylko problem w najnowszym Chrome. Wydaje się, że nie dotyczy to przeglądarki Firefox/Safari. – helion3

2

To rzeczywiście jest problem, który pojawił się w wersji 0.5.9 ng-inspectora (jestem jego opiekunem), który został wydany wczoraj. Już pracuję nad rozwiązaniem tego i wkrótce je udostępnię.

Strasznie mi przykro za niedogodności = (

EDIT: opublikował v0.5.10, powinno rozwiązać ten problem W przypadku wystąpienia dalszych trudności, nie krępuj się otworzyć problem w https://github.com/rev087/ng-inspector/

+0

Aktualizacja do wersji v0.5.10, działa teraz. Dziękuję za szybką reakcję! –

+0

Dzięki za potwierdzenie poprawki! Czuję się okropnie dla wszystkich ludzi, którzy musieli stracić godziny, próbując rozwiązać problem, który nie był ich błędem od początku = ( – rev087

Powiązane problemy