2017-07-16 54 views
0

我有一个文件夹中的以下两个文件:Node.js的路径无限循环

enter image description here

加一个文件在同一文件夹名为minions_model

但是,当我尝试调用murder_model有:

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

,并调用它,看看它的功能,我得到:

{} 

,而我应该看到:

{ xxx: [Function: xxx] } 

更新: 好像missionModel未能得到,因为minionModel的谋杀文件。

我注意到如果我从谋杀文件中删除minionModel引用,它会工作。 但是minionModel因为Mission_model而崩溃。所以如果我从MissionModel中删除minionModel它会工作。但它的无限循环!

这是什么原因导致的,我该如何解决?

来源:

爪牙:

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, 
}; 

谋杀:

var path = require('path'); 

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

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





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

使命:

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

    function getMission(userid) { 

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

module.exports = { 
    getMission : getMission, 

}; 

它的怪异,因为如果我把它在其他地方(在未奴才,谋杀或错误sion,例如server.js,它可以很好地工作。

回答

1

发生这种情况是因为您要替换整个module.exports对象,并且这两个模块互相要求并导致循环依赖。你可以解决它我不能取代module.exports对象。

试试这个:

module.exports.getMission = getMission; 

module.exports.xxx = xxx; 

module.exports.yyy = yyy; 
+0

它的奇怪,因为如果我在其他地方调用它(不是奴才,谋杀或任务,例如server.js它完美的作品。 – maria