NodeJs: TypeError: require (...) n'est pas une fonction

j'essaie d'avoir besoin d'un fichier et je le passe ensuite à un var. Je suis ce tutoriel pour créer un système d'authentification. Après avoir écrit le serveur.fichier js et en essayant de compiler, j'ai reçu un bfils d'erreur donc j'ai changé la ligne que nécessaire la version de dans la mangouste.

Voici mon code et erreur:

server.js

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

Erreur

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

TypeError: require(...) is not a function
           at Object.<anonymous> (d:Node JS learningWorkWarV2server.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

j'ai lu que cela signifie habituellement que requireJS n'est pas chargé correctement, mais je ne sais pas pourquoi ni comment le corriger.

modifier en raison du commentaire:

comme demandé, ici est le résultat de console.log(require);

44
demandé sur Louis 2015-10-08 09:11:09

4 réponses

je pense que cela signifie que module.exports dans votre ./app/routes module n'est pas assigné à être une fonction donc require('./app/routes') ne se résout pas à une fonction donc, vous ne pouvez pas l'appeler comme une fonction comme celle-ci require('./app/routes')(app, passport) .

Montrez-nous ./app/routes si vous voulez nous en dire plus sur ce point.

, Il devrait ressembler à quelque chose comme ceci:

module.exports = function(app, passport) {
    // code here
}

Vous exportez une fonction qui peut ensuite être appelé comme require('./app/routes')(app, passport) .


une autre raison pour laquelle une erreur similaire pourrait se produire est si vous avez une dépendance de module circulaire où le module A essaye de require(B) et le module B essaye de require(A) . Lorsque cela se produit, il sera détecté par le "151990920 sous-système" et l'un d'eux va revenir comme null et donc d'essayer d'appeler ça comme une fonction ne fonctionnera pas. La solution dans ce cas est de supprimer la dépendance circulaire, habituellement en fractionnant le code commun en un troisième module que les deux peuvent charger séparément bien que les spécificités de la fixation d'une dépendance circulaire soient uniques pour chaque situation.

59
répondu jfriend00 2018-07-25 05:44:15

Pour moi, c'était un problème de dépendances cycliques.

OIE, module obligatoire module B, et le module B module obligatoire A.

ainsi, dans le module B, require('./A') est un objet vide plutôt qu'une fonction.

Comment gérer les dépendances cycliques dans le Nœud.js

8
répondu Bryan Larsen 2017-05-23 10:31:36

installation du module autoloader résolu mon problème.

npm install autoloader.

et modifiez votre code comme suit:. De: require('autoloader').autoload(__dirname + '/src'); à require('autoloader')(__dirname + '/src');

Note: assurez-vous du nom du module.. autoload nous avons beaucoup de modules..

-3
répondu BEJGAM SHIVA PRASAD 2016-09-12 06:53:53

n'oubliez pas d'exporter votre routes.js .

dans routes.js , écrivez vos routes et tout votre code dans ce module de fonction:

exports = function(app, passport) {

/* write here your code */ 

}
-3
répondu Milani Igor 2017-05-22 09:43:12