2017-02-26 31 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