2017-02-26 106 views
-2

我有一个模块,定义将由其他模块共享的函数。其中一些功能需要被覆盖。这是我在想什么,但它不工作:如何重写Node.js中的方法?

// 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() 

回答

1

设置module.exports不会奇迹般地改变exports值。如果您想在模块功能中使用它,您还需要将其分配给相同的值(module.exports = exports = ...)。

+0

明白了,谢谢! – nachocab