2015-09-19 20 views
5

DziałaDlaczego nie mogę wymagać (...) w pętli przy użyciu przeglądarki?

require('./AppCtrl'); 

ale jeśli robię

[ './AppCtrl' ].forEach(function(name) { 
    require(name); 
}); 

skutkuje błędami

_prelude.js:1 Uncaught Error: Cannot find module './AppCtrl's @ _prelude.js:1s @ _prelude.js:1(anonymous function) @ _prelude.js:1(anonymous function) @ index.js:48 @ index.js:3s @ _prelude.js:1(anonymous function) @ _prelude.js:11../config @ app.js:22s @ _prelude.js:1e @ _prelude.js:1(anonymous function) @ _prelude.js:1 
angular.js:12416 Error: [ng:areq] Argument 'AppCtrl' is not a function, got undefined 
http://errors.angularjs.org/1.4.5/ng/areq?p0=AppCtrl&p1=not%20a%20function%2C%20got%20undefined 
at REGEX_STRING_REGEXP (angular.js:68) 
at assertArg (angular.js:1795) 
at assertArgFn (angular.js:1805) 
at angular.js:9069 
at setupControllers (angular.js:8133) 
at nodeLinkFn (angular.js:8173) 
at compositeLinkFn (angular.js:7637) 
at publicLinkFn (angular.js:7512) 
at angular.js:1660 
at Scope.parent.$get.Scope.$eval (angular.js:15878) 

dla mojej końcowej bramki Chciałbym móc zrobić coś takiego Pseudokod

foreach name { 
    angular.module(...).controller(require(name)); 
} 

ale w tej chwili nie jestem pewien, dlaczego nie mogę wymagać plików w pętli?

+0

Dlaczego dokładnie próbujesz to zrobić? – Bergi

+0

ponieważ myślę, że to śmieszne, aby ręcznie wymagać każdego modułu, jest dużo powtarzalnego kodu. – xenoterracide

+0

Wymaganie wszystkiego wszędzie jest oczywiście zapachem kodu, może coś jest nie tak z twoim kodem? Powinieneś jednak po prostu połączyć te moduły, które powtarzasz wszędzie w dużym module, i zaimportować je wszędzie. Nie używaj tablicy i pętli. – Bergi

Odpowiedz

5

Ponieważ program Browserify (przez Detektywa) tworzy wykres zależności na podstawie analizy statycznej, a zatem przetwarza tylko wywołania require() z argumentami literowymi ciągów znaków.

Powiązane problemy