2017-01-25 103 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");