2017-09-25 57 views
0

我爆發了,像這樣多個不同的文件:如何以設置導出類方法的全局變量的node.js

index.js 
utils.js 
ClassA/ 
    index.js 
    base.js 

utils包含了一些隨處可見的實用功能。 ClassA的/ index.js包含ClassA的構造以及需要base.js,然後出口ClassA的。 Base.js導出ClassA的原型方法。這基本上是他們的樣子:

//ClassA/index.js 
function ClassA() { 
    //constructor stuff 
} 
ClassA.prototype.constructor = ClassA; 
require('./base')(ClassA); 
module.exports = ClassA; 

//ClassA/base.js 
module.exports = ClassA => { 
ClassA.prototype.aMethod = function() { 
    log('hello'); 
} 

//utils.js 
module.exports = { 
    log : function (logText) { 
    //dostuff 
    } 
} 

所以我的問題是,我無法從方法中訪問日誌功能ClassA/base.js。如果我在文件的頂部設置const log = require('../utils').log,這是行不通的。它還如果我地方的出口內而外的方法定義的代碼同一行,但它確實,如果我的方法本身把它(如預期工作不工作,但是這將意味着複製在任何需要的每聲明需要的方法)。有沒有什麼方法可以使用這種混亂和重複的路線?

+0

這是一個循環依賴的問題,可能是https://stackoverflow.com/questions/10869276/how-to-deal-with-cyclic-dependencies-in-node-js的重複,但我會寫後一個答案我完成烹飪:D –

+0

啊,你是對的。我做了一些研究並採取了重構的推薦路徑以避免它。謝謝! – Beckleyc

回答

0

正是有了循環依賴的問題。我將'log'改爲ClassA的一種方法,並解決了這個問題。感謝Francois P.指引我朝着正確的方向前進。

+0

對不起,沒有時間來寫一個答案:) –