我有一个模块,用于定义将由其他模块共享的功能。其中一些功能需要被覆盖。这就是我的想法,但它不起作用:
// shared_module.js
module.exports = {
alternativeFun() {
exports.doSomething()
sharedFun()
},
sharedFun() {
console.log('shared')
}
}
// alternative_module1.js
module.exports = {
doSomething() {
console.log('alternative 1')
}
}
// alternative_module2.js
module.exports = {
doSomething() {
console.log('alternative 2')
}
}
// main.js
const shared1 = require('./shared_module')
shared1.doSomething = require('./alternative_module1').doSomething
shared1.alternativeFun()
const shared2 = require('./shared_module')
shared2.doSomething = require('./alternative_module2').doSomething
shared2.alternativeFun()
答案 0 :(得分:1)
设置module.exports
并不会神奇地改变exports
的值。如果要在模块的功能中使用它,还需要将其分配给相同的值(module.exports = exports = ...
)。