2017-01-25 124 views
0

我有文件導出「項目,國家manager.js」:導入模塊錯誤不是函數?

module.exports.aggregate_states = function (member_states) { 
    console.log(member_states); 
} 

其他文件應導入此模塊和使用功能「aggregate_states」:

var aggregate_states = require("./item-state-manager.js") 

module.exports.saveItem = function() { 
var aggregate = aggregate_states("state"); 
} 

但我收到錯誤:

TypeError: aggregate_states is not a function 

我是否導入'item-state-manager.js'錯誤?

回答

2

據我所知,require返回module.exports對象。

如果aggregate_states是您想要導出的唯一函數,請使用此函數。

module.exports = function (member_states) { 
    console.log(member_states); 
} 

否則像這樣導入它。

var aggregate_states = require("./item-state-manager.js").aggregate_states; 
+0

thanks.will在6分鐘後標記您的答案 – Serhiy

0

試試這個:

var aggregate_states = require("./item-state-manager.js").aggregate_states; 

module.exports.saveItem = function() { 
var aggregate = aggregate_states("state"); 
} 

aggregate_states只是整個恢復模塊的屬性,當你需要你的整個模塊這是一個Object,看起來像這樣:

{ 
    aggregate_states: function() {...} 
} 
0

你沒有正確導入模塊。無論是進口直接使用

var aggregate_states = require("./item-state-manager.js").aggregate_states; 

或者如果您使用的是最新版本的節點導入模塊,並調用函數

var stateManager = require("./item-state-manager.js"); 
// And use it like this 
stateManager.aggregate_states(/*...*/) 

的funcion,你也可以做

const { aggregate_states } = require("./item-state-manager.js");