如何从子文件中获取调用它的父文件名?
如何在child.js中打印调用它的parent.js文件名
要实现这个需求,你可以借助Node.js模块系统自带的module.parent对象获取调用当前模块的父模块信息,再结合path模块提取出文件名。下面是具体的实现方案:
1. 编写parent.js代码
在parent.js里正常引入child.js即可:
// parent.js require('./child.js');
2. 编写child.js代码
在child.js中,通过module.parent.filename拿到父模块的完整路径,再用path.basename()提取出纯文件名:
// child.js const path = require('path'); // 获取当前child.js的文件名 const childFileName = path.basename(__filename); // 获取调用当前模块的父模块(parent.js)的文件名 const parentFileName = path.basename(module.parent.filename); console.log(`${childFileName} is being called by ${parentFileName}`);
3. 运行验证
执行命令node parent.js,你会看到预期输出:
child.js is being called by parent.js
额外提示
- 如果你的项目存在多层模块调用(比如A.js调用B.js,B.js再调用child.js),
module.parent只会返回直接调用它的模块(也就是B.js);如果需要获取最顶层的入口文件,可以改用path.basename(process.mainModule.filename)。 - 若child.js是直接被
node命令执行的(比如node child.js),module.parent会是null,实际使用时可以加个判断避免报错:
const parentFileName = module.parent ? path.basename(module.parent.filename) : 'no parent module';
内容的提问来源于stack exchange,提问作者thehme
相关产品推荐
相关产品推荐

