我有两个文件(例如)。
./数据库/ 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
变量。
使用变量有什么问题?在我的项目的其他文件中绝对相似的代码似乎没问题。
答案 0 :(得分:1)
由于您有循环依赖关系,请尝试设置module.exports
的属性,而不是直接覆盖它:
var functions = {
getUniqueByID: xxx
};
for(var key in functions) {
module.exports[key] = functions[key];
}
(来自this answer)
中提供的想法