2017-07-16 7 views
0

Ich habe die folgenden zwei Dateien in einem Ordner:Node.js Weg unendlich Schleife

enter image description here

plus eine Datei in denselben Ordner namens minions_model

Aber wenn ich versuche, mit murder_model zu nennen:

var murder_model = require('./murder_model.js'); 

und nennen es seine Funktionen zu sehen, die ich erhalten:

{} 

, während ich so etwas wie sehen sollte:

{ xxx: [Function: xxx] } 

Update: Es scheint wie missionModel nicht zu Mord Datei bekommen wegen minionModel.

Ich bemerkte, wenn ich minionModel Referenz aus Mord-Datei entfernt, würde es funktionieren. Aber minionModel stürzt wegen Mission_model ab. Wenn ich also minionModel von MissionModel entferne, würde es funktionieren. Aber es ist eine unendliche Schleife !.

Was verursacht dies und wie kann ich es beheben?

Quelle:

Günstlinge:

var path = require('path'); 
var missionsCompålicated = require('./mission_model.js'); 


var mongoose = require('mongoose'); 
function yyy() { 
    console.log("inside minions"); 
    return 499; 
} 

module.exports = { 
    yyy : yyy, 
}; 

Mordens:

var path = require('path'); 

var MinionModel = require('./minions_model.js'); 

function xxx() { 
    console.log("inside murder model"); 
} 





module.exports = { 
    /*botAttack : botAttack,*/ 
    xxx : xxx, 
}; 

Mission:

var xau = require('./murder_model.js'); 

    function getMission(userid) { 

     console.log("??:)"); 
     console.log(xau); 
     console.log(xau.xxx()); 
    } 

module.exports = { 
    getMission : getMission, 

}; 

Seine seltsam, denn wenn ich es irgendwo anders nennen (nicht in Untergebener, Mord oder Mis sion, zum Beispiel server.js funktioniert es perfekt.

Antwort

1

Dies passiert, weil Sie das gesamte Objekt module.exports ersetzen und die beiden Module einander erfordern und eine zyklische Abhängigkeit verursachen. Sie können es lösen, indem ich das module.exports Objekt nicht ersetze.

Try this:

module.exports.getMission = getMission; 

module.exports.xxx = xxx; 

module.exports.yyy = yyy; 
+0

Seine seltsam, denn wenn ich es sonst überall anrufen (nicht in Untergebener, Mord oder Mission, zum Beispiel server.js es perfekt funktioniert. – maria