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.js
的createNew()
uperm.js
,没有任何exception。
但是我不想在所有地方都使用require('./user.js')
,而不是将其分配给dbUser
variables。
如果使用variables有什么问题? 在我的项目的其他文件中的绝对相似的代码似乎是确定的。
由于你有循环依赖,试着设置module.exports
属性而不是直接覆盖它:
var functions = { getUniqueByID: xxx }; for(var key in functions) { module.exports[key] = functions[key]; }
(从这个答案提供的想法)