2017-02-26 17 views
-2

私は他のモジュールによって共有される機能を定義するモジュールを持っています。これらの関数のいくつかはオーバーライドする必要があります。これは私が考えていたものですが、それは動作しません:魔法exportsの値を変更しませんmodule.exportsを設定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 = ...)にも割り当てる必要があります。

+0

ありがとう! – nachocab

関連する問題