2015-09-19 8 views
5

Dies funktioniertWarum kann ich (...) nicht in einer Schleife mit browserify anfordern?

require('./AppCtrl'); 

aber wenn ich

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

es führt zu Fehlern

_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) 

für mein Endziel Ich möchte in der Lage sein, so etwas wie dieser Pseudo-Code zu tun

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

aber ich bin mir nicht sicher, warum ich keine Dateien innerhalb der Schleife benötigen kann?

+0

Warum genau versuchen Sie dies zu tun? – Bergi

+0

weil ich denke, dass es lächerlich ist, jedes einzelne Modul manuell zu verlangen, gibt es eine Menge repetitiven Code. – xenoterracide

+0

Erfordert alles überall einen Code Geruch natürlich, vielleicht ist etwas mit Ihrem Code falsch? Sie sollten jedoch die Module, die Sie überall in einem großen Modul wiederholen, einfach kombinieren und nur überall importieren. Verwenden Sie kein Array und keine Schleife. – Bergi

Antwort

5

Weil Browserify (via Detective) den Abhängigkeitsgraphen basierend auf statischer Analyse erstellt und daher nur require() Aufrufe mit String-Literal-Argumenten verarbeitet.

Verwandte Themen