nodejs - 从子模块调用父模块内的函数
nodejs - Call a function inside a parent module from a child module
假设我有一个名为parent.js
的文件,其中包含以下源代码:
var child = require('./child')
var parent = {
f: function() {
console.log('This is f() in parent.');
}
};
module.exports = parent;
child.target();
以及一个名为 child.js
的文件,其中包含以下源代码:
var child = {
target: function() {
// The problem is here..
}
}
module.exports = child;
我使用以下命令执行该文件:
node parent.js
问题是,我想直接在child.js
内部执行f()
,而无需使用任何require(...)
语句。以前,我尝试在child.js
target()
内执行此语句:
module.parent.f()
和
module.parent.exports.f()
但它不起作用。奇怪的是,当我在child.js
内部执行console.log(module.parent.exports)
时,会出现以下输出:
{ f: [Function] }
那为什么我不能直接打电话给f()
呢?
您可以考虑使用回调函数:
var child = {
target: function( callback ) {
callback();
}
}
module.exports = child;
然后在 parent 中.js像这样调用目标:
child.target( parent.f );
您也可以尝试以下设置,使用 require.main(不推荐使用 module.parent) 访问父函数。
父.js
var parent = {}
parent.f = function(){
console.log('called parent function from child');
}
module.exports = {
parent:parent
}
var child = require('./child.js');
孩子.js
var child = {};
var parent = require.main.exports.parent;
child.f = function(){
parent.f();
}
//call parent function here
child.f();
module.exports = {
child:child
}
作为 Lee Jenkins 建议的替代方案,您可以将代码更改为此代码(如果不显示代码,则很难解释)
父.js
var parent = {
f: function() {
console.log('This is f() in parent.');
}
};
var child = require('./child')(parent);
module.exports = parent;
child.target();
孩子.js
module.exports = function (parent) {
return child = {
target: function() {
parent.f();
}
};
}
相关文章:
- Nodejs模块函数返回未定义的,而不是异步的
- 从模块函数返回未定义的对象
- jQuery模块函数意外返回'未捕获的类型错误'
- 将模块函数传递给另一个文件中的函数
- 从视图调用异步加载模块函数
- RequireJS:模块函数是每次导入模块时执行还是第一次执行
- 从模块函数显式访问模块 var 以揭示模块模式
- Typescript-不同文件中的模块函数引用-“;找不到符号“;
- 两个异步模块函数异步工作
- node.js导出模块函数
- Node.js:使用Bluebird将模块函数从回调转换为承诺
- 如何访问require.js模块's函数
- 调用另一个模块函数作为回调[ES6]
- Node.js模块函数的访问参数
- 剑道MVVM绑定到自执行匿名模块函数
- 如何重写模块函数'
- 如何有选择地导入ES2015模块函数,但要使用命名空间
- 我应该把包依赖传递给模块函数,还是只在模块文件中需要它们?
- Node.js将变量传递给模块vs将变量传递给每个模块函数
- 未捕获的错误:不匹配的匿名定义()模块:函数定义(name, global)