2017-07-16 5 views
0

Iフォルダに次の2つのファイルがあります:minions_modelNode.jsのパスの無限ループ

と呼ばれる同じフォルダに

enter image description here

プラスワンのファイルをしかし、私はとmurder_modelを呼び出すしようとすると:

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

とその機能を確認するためにそれを呼び出して、私は得る:

{} 

私のようなものが表示されるはずながら:

{ xxx: [Function: xxx] } 

更新:missionModelが原因minionModelの殺人ファイルの取得に失敗したよう それはそうです。

私は、MurderファイルからminionModelリファレンスを削除した場合、動作することに気付きました。 しかし、minionModelはMission_modelのためにクラッシュします。私がMionModelから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

これは、module.exportsオブジェクト全体を置き換えているために発生し、2つのモジュールがお互いを必要とし、循環的な依存関係を引き起こしているためです。 module.exportsオブジェクトを置き換えないで解決できます。

はこれを試してみてください:

module.exports.getMission = getMission; 

module.exports.xxx = xxx; 

module.exports.yyy = yyy; 
+0

その奇妙な、私は(ない手先、殺人やミッションのどこにもそれを呼び出す場合、例えば、それは完璧に動作server.jsので。 – maria