导入模块错误不是函数?

Ser*_*hiy 3 node.js

我有文件导出'item-state-manager.js':

module.exports.aggregate_states = function (member_states) {
    console.log(member_states);
 }
Run Code Online (Sandbox Code Playgroud)

其他文件应导入此模块并使用函数'aggregate_states':

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

module.exports.saveItem = function () {
 var aggregate = aggregate_states("state");
}
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

TypeError: aggregate_states is not a function
Run Code Online (Sandbox Code Playgroud)

我导入'item-state-manager.js'错了吗?

skA*_*tro 6

据我所知,require返回module.exports对象.

如果aggregate_states是您要导出的唯一函数,请使用此函数.

module.exports = function (member_states) {
    console.log(member_states);
}
Run Code Online (Sandbox Code Playgroud)

否则像这样导入它.

var aggregate_states = require("./item-state-manager.js").aggregate_states;
Run Code Online (Sandbox Code Playgroud)


fre*_*ett 5

TypeError: (0 , _store.withToken) is not a function最近,在项目上运行我的(最小)测试套件时,我遇到了同样的错误。令人困惑的是,该函数withToken在许多测试中表现良好,但在其他测试中则不然。

经过大量研究,我最终将其范围缩小为循环依赖问题。

重构我的代码以消除循环依赖性解决了问题并且错误消失了。具体来说,我必须将一些相互引用的文件放入一个更大的文件中,该文件不太整洁,但消除了这个问题。

在我的实例中,因为我的withToken函数引用了store和 被store引用的withToken,所以两个函数不能同时设置,因此要设置storewithToken需要导入,并且使用withToken它需要导入store