我有要导出的文件' item-state-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'错?
答案 0 :(得分:5)
据我所知,需要返回module.exports对象。
如果aggregate_states是您要导出的唯一功能,请使用此功能。
module.exports = function (member_states) {
console.log(member_states);
}
否则就像这样导入它。
var aggregate_states = require("./item-state-manager.js").aggregate_states;
答案 1 :(得分:1)
您没有正确导入模块。使用
直接导入功能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(/*...*/)
如果您使用的是最新版本的节点,也可以执行
const { aggregate_states } = require("./item-state-manager.js");
答案 2 :(得分: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() {...}
}
答案 3 :(得分:0)
最近我在一个项目上运行(最小)我的测试套件时遇到了同样的错误,TypeError: (0 , _store.withToken) is not a function
。令人困惑的是,函数 withToken
在许多测试中都很好,但在其他测试中却没有。
经过大量挖掘,我终于将其缩小为 cyclical dependency 的问题。
重构我的代码以便删除循环依赖解决了问题并且错误消失了。具体来说,我不得不将一些相互引用的文件合并到一个更大的文件中,这有点不整洁,但消除了这个问题。
在我的例子中,因为我的 withToken
函数引用了 store
,而 store
引用了 withToken
,所以不能同时设置这两个函数,所以为了设置 store
,withToken
需要导入,而要使用 withToken
,它需要导入的 store
。
答案 4 :(得分:-1)
------在导出文件中
声明要正常导出的功能... 函数aggregate_state(member_states)
在该.js文件末尾添加... module.exports = { gregation_state:aggregate_state, }
------在导入文件中
导入所需文件... constgregation_states = require(“ ./ item-state-manager.js”);
称呼它... item-state-manager.aggregate_state(member_states);