我正在研究export和module.exports在Node中的区别。这个问题特别有用:module.exports vs exports in Node.js。简而言之,这就是发生的情况:
//require function
module = {
exports:{}
}
(function(exports){
exports = 1; //contents of module
})(module.exports)
如果您忘记了该节点,只需编写一个具有相同功能的简单功能即可:
newmodule = {exports:{}};
function reassign(exports){
exports = ()=>{console.log("123")}
//or exports = 1;
//or exports = "Hello";
}
reassign(newmodule.exports)
console.log(newmodule.exports) // prints empty object, reassign failed
您会发现newmodule.exports
确实从未被重新分配。不知道我是否会冻结大脑,但是newmodule.exports
已通过引用传递。但是,重新分配不会反映在传递的对象newmodule.exports
上。这是为什么?
扩展传递的对象可以正常工作
function reassign(exports){
exports.somefunc = ()=>{console.log("123")} // works as expected
}