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

我有两个文件(例如)。

./database/user.js

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

./database/uperm.js

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

uperm.js函数createNew()总是抛出一个exception:

 .../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(); } }; 

然后,来自user.js getUniqueByID()来自user.jscreateNew() uperm.js ,没有任何exception。

但是我不想在所有地方都使用require('./user.js') ,而不是将其分配给dbUservariables。

如果使用variables有什么问题? 在我的项目的其他文件中的绝对相似的代码似乎是确定的。

由于你有循环依赖,试着设置module.exports属性而不是直接覆盖它:

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

(从这个答案提供的想法)