2015-10-08 19 views
37

Ich versuche eine Datei zu verlangen und hinterlasse sie dann an eine Var. Ich folge this Tutorial, um ein Authentifizierungssystem zu erstellen. Nach dem Schreiben der Datei server.js und dem Versuch, zu kompilieren, habe ich einen bson-Fehler bekommen, deshalb habe ich die Zeile geändert, die die Release-Version davon in mongoose benötigt.NodeJs: TypeError: require (...) ist keine Funktion

Hier sind meine Code und Fehler:

server.js

require('./app/routes')(app, passport); 

Fehler

require('./app/routes')(app, passport); 
       ^

TypeError: require(...) is not a function 
      at Object.<anonymous> (d:\Node JS learning\WorkWarV2\server.js:38:24) 
      at Module._compile (module.js:434:26) 
      at Object.Module._extensions..js (module.js:452:10) 
      at Module.load (module.js:355:32) 
      at Function.Module._load (module.js:310:12) 
      at Function.Module.runMain (module.js:475:10) 
      at startup (node.js:117:18) 
      at node.js:951:3 

Process finished with exit code 1 

ich gelesen habe, dass dies in der Regel bedeutet, dass erfordern JS wird nicht richtig geladen, aber ich weiß nicht warum oder wie ich es beheben kann.

bearbeiten aufgrund Kommentar:

Als gefragt, das Ergebnis hereconsole.log(require);

+0

Können Sie 'console.log (erforderlich)' vor der Zeile, die fehlschlägt? Sie sollten requireJS nicht auf der Serverseite benötigen, node.js hat ein eingebautes Modulsystem (CommonJS, verwendet auch die 'require' Funktion). Etwas scheint die globale 'require' Variable zu verändern. – kraf

Antwort

50

ist Ich denke, das bedeutet, dass module.exports in Ihrem ./app/routes Modul eine Funktion so daher nicht zugeordnet require('./app/routes') sein nicht zu einer Funktion auflösen, also können Sie es nicht als eine Funktion wie diese require('./app/routes')(app, passport) nennen.

Zeigen Sie uns ./app/routes, wenn Sie möchten, dass wir weiter darüber kommentieren.

+2

Ja, das hat es behoben, vergaß es eine Funktion zu machen ... Thnx. – user1640736

-3

Das Installieren des Autoloader-Moduls hat mein Problem gelöst.

npm install autoloader. 

Und Code ändern, wie folgend .. Von: require('autoloader').autoload(__dirname + '/src');-require('autoloader')(__dirname + '/src');

Hinweis: Stellen Sie sicher, dass Modulnamen .. automatisches Laden wir viele Module haben ..

8

Für mich war ein Problem mit zyklischen Abhängigkeiten.

IOW, Modul A Modul B erforderlich, und das Modul B Modul erforderlich A.

So in Modul B ist require('./A') ein leeres Objekt eher als eine Funktion.

How to deal with cyclic dependencies in Node.js

-3

Denken Sie daran, Ihre routes.js zu exportieren.

In routes.js, schreiben Sie Ihre Routen und den gesamten Code in diesem Funktionsbaustein:

exports = function(app, passport) { 

/* write here your code */ 

} 
Verwandte Themen