javascript - node.js - 查找 require()ing 模块的路径

标签 javascript node.js

在满足以下要求的情况下,尝试找到确定模块 require() 的路径的正确方法:

  • 必须符合严格模式
  • 不能对程序参数做出任何假设(即 process.argv)
  • 必须在任意位置的多个模块需要时工作一次执行(即我的模块被缓存)

我最终通过修补 Module._load() 并在闭包中捕获调用者路径来实现它,如下所示:github

但是这感觉不对——我一定是漏掉了什么。

最佳答案

修补 module._load 是我认为的最佳方式。你只能通过module.parent.filename获取第一个调用你模块的模块。并且模块的整个 childrenparent 属性仅在第一次加载时为真。根据source code ,如果它被缓存,你就不能依赖任何东西。您可以尝试将自己从缓存中删除(delete require.cache[__filename];),这样每次需要您的模块时,您都会获得正确的父级,但这会增加加载时间。

关于javascript - node.js - 查找 require()ing 模块的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13323025/

相关文章:

Node.js 查询 MongoDB 以返回以数组中的任何值开头的所有匹配项

javascript - Sequelize-创建实例后不返回 promise

javascript - 隐藏在 mootools slider 后面的下拉菜单

javascript - 设置ajax调用的延迟

javascript - js导入找不到wasm文件

node.js - 将数千条消息添加到 Azure 存储队列

javascript - Node.js 的 Hip-Hop PHP?

node.js - 带有版本号的 Mongoose 乐观并发

javascript - 如何通过 JavaScript 确定页面是否安全?

javascript - Node.js 解析路由的最小函数