exports = {
z: function() {
console.log('aZ');
}
};
main.js
require('./a').z(); // error
爲什麼require('./a')
返回一個空對象?
exports = {
z: function() {
console.log('aZ');
}
};
main.js
require('./a').z(); // error
爲什麼require('./a')
返回一個空對象?
因爲在您的示例中,您將覆蓋全球的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;
:
所以你可以想象這種情況。
與CommonJS的你應該使用module.exports
代替:
module.exports = {
z: function() {
console.log('aZ');
}
};
然後:
require('./a').z();
這是初學者混亂,但也有略有不同的幾個出口格式。
如果要導出整個物體像你說的,你可以更換整個出口像這樣:
module.exports = { z: function(){}};
你也可以附加的東西到出口對象直接
exports.z = function(){}
最後,如果你使用的是ES6兼容版本,你可以做
export default { z: function(){}};
是'module.exports = {}'可以用來模擬d efault(未命名)導出es6'? –