Node.js,TypeError:xxx不是require'd文件中的函数

时间:2016-04-08 12:07:35

标签: javascript node.js

我有两个文件(例如)。

./数据库/ user.js的

module.exports = {
    getUniqueByID: function(params){
        doSomething();
        return anUserObject;
    }
};

./数据库/ uperm.js

var dbUser = require('./user.js');
module.exports = {
    createNew: function(params){
        dbUser.getUniqueByID(uid);
        doSomethingElse();
    }
};

来自createNew()的函数uperm.js始终抛出异常:

.../uperm.js:123
dbUser.getUniqueByID(uid);
TypeError: dbUser.getUniqueByID is not a function

但是,如果我将./database/uperm.js更改为:

module.exports = {
    createNew: function(params){
        require('./user.js').getUniqueByID(uid);
        doSomethingElse();
    }
};

来自getUniqueByID()的{​​{1}} user.js来自createNew()来自uperm.js,没有任何例外。

但我不想在任何地方使用require('./user.js'),而是将其分配给dbUser变量。

使用变量有什么问题?在我的项目的其他文件中绝对相似的代码似乎没问题。

1 个答案:

答案 0 :(得分:1)

由于您有循环依赖关系,请尝试设置module.exports的属性,而不是直接覆盖它:

var functions = {
   getUniqueByID: xxx
};

for(var key in functions) {
    module.exports[key] = functions[key];
}

(来自this answer

中提供的想法