Node.js,TypeError:xxx不是函数,在require'd文件
Node.js, TypeError: xxx is not a function, in require'd file
我有两个文件(例如)。
/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()
总是抛出异常:
.../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()
被来自uperm.js
的createNew()
调用,没有任何例外。
但我不想在任何地方都使用require('./user.js')
,而不是将其分配给dbUser
变量。
在使用变量的情况下有什么问题?我项目的其他文件中完全相似的代码似乎也可以。
由于您有循环依赖关系,请尝试设置module.exports
的属性,而不是直接覆盖它:
var functions = {
getUniqueByID: xxx
};
for(var key in functions) {
module.exports[key] = functions[key];
}
(根据这个答案中提供的想法)
相关文章:
- 如何在不使用require语句的情况下使用webpack加载目录中的所有文件
- 在nodejs中使用require来访问外部javascript文件
- require('file_path')后面的后缀(模块)在javascript文件中是什么意思
- 从require()'d文件访问函数
- 在 Firefox 中加载带有 require.js 的文本文件失败:“AccessControlException”
- Require JS with Knockout组件正在查找路径不正确的JS文件
- 从哪里生成 require.js 文件
- Node.js,TypeError:xxx不是函数,在require'd文件
- Require.js何时加载文件
- MongoDB脚本和CSV文件:我可以使用require.js加载jquery.CSV吗
- 重构 require.config.js 文件
- 如何通过从浏览器 js 控制台触发的 require.js 重新加载文件
- 在 Node 中包含 javascript 文件.js无需 require('.') ing
- 使用 require.js 将应用程序的 javascript 拆分为多个 JS 文件
- require('backbone') 在不同的文件中返回不同的对象
- 在 VOWS 文件中使用 require.config
- 如何将browserify——require文件传递给angular模块
- 如果分配给嵌套require中的变量,RequireJS R.js看不到依赖的require文件
- 扩展数组.原型在Node.js中,从一个require'd文件
- Sublime从require文件中读取函数,然后自动完成