Node.js路径无限循环

时间:2017-07-16 04:33:40

标签: javascript node.js loops

我在文件夹中有以下两个文件:

enter image description here

在名为minions_model

的同一文件夹中加一个文件

但是当我尝试用:

打电话给murder_model时
var murder_model = require('./murder_model.js');

并调用它来查看其功能,我得到:

{}

虽然我应该看到类似的东西:

{ xxx: [Function: xxx] }

更新: 由于minionModel,似乎missionModel无法获得谋杀文件。

我注意到如果我从Murder文件中删除了minionModel引用,它就可以了。 但由于Mission_model,minionModel崩溃了。所以如果我从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,

};

它很奇怪,因为如果我把它称之为其他地方(不是在奴才,谋杀或任务中,例如server.js它完美地运作。

1 个答案:

答案 0 :(得分:1)

这是因为您要替换整个module.exports对象,并且这两个模块相互要求并导致循环依赖。您可以解决此问题,而不是替换module.exports对象。

试试这个:

module.exports.getMission = getMission;

module.exports.xxx = xxx;

module.exports.yyy = yyy;