2016-11-23 49 views

回答

6

因爲在您的示例中,您將覆蓋全球的exports,而不是更新它。如果您要更換你的代碼:

exports.z = function() { 
    console.log('aZ'); 
}; 

它會工作,因爲你要添加z實際出口對象。


如果你看一下docs,您將看到:

的引用到較短鍵入module.exports。如果你更換exports = something,你實際上並沒有改變module.exports出口現在

var module = { 
    exports: { /* some export stuff */ } 
}; 

var exports = module.exports; 


所以你可以想象這種情況。

+0

是'module.exports = {}'可以用來模擬d efault(未命名)導出es6'? –

1

與CommonJS的你應該使用module.exports代替:

module.exports = { 
    z: function() { 
     console.log('aZ'); 
    } 
}; 

然後:

require('./a').z(); 
1

這是初學者混亂,但也有略有不同的幾個出口格式。

如果要導出整個物體像你說的,你可以更換整個出口像這樣:

module.exports = { z: function(){}}; 

你也可以附加的東西到出口對象直接

exports.z = function(){} 

最後,如果你使用的是ES6兼容版本,你可以做

export default { z: function(){}}; 
相關問題