最近新發(fā)現(xiàn)了一個在 NodeJS 中導(dǎo)致出現(xiàn)循環(huán)引用的可能情況薄坏。下面說明一下。
本來呢寨闹,如果直接在module.exports
上設(shè)置導(dǎo)出屬性胶坠,那么循環(huán)引用發(fā)生時,也可以獲取到正確的值繁堡。因為并沒有改變原來導(dǎo)出對象的引用沈善。
比如這樣,
module.exports.a = '123';
但是椭蹄,如果導(dǎo)出的是一個函數(shù)闻牡,那么需要在導(dǎo)入之前先導(dǎo)出本函數(shù),才不會發(fā)生循環(huán)引用時候獲取不到正確的值绳矩。否則導(dǎo)入的仍舊是舊的默認(rèn)module.exports
對象罩润,然而它會被覆蓋,是無用的翼馆。
function A(){}
module.exports = A;
require('...')
請看這個 issue