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

时间:2012-11-10 14:46:10

标签: javascript node.js

在给定以下要求的情况下,试图找到确定模块路径的正确方法();

  • 必须符合严格模式
  • 不能对程序args做任何假设(即process.argv)
  • 必须在任意位置从多个模块执行单次执行(即我的模块被缓存)

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

然而这感觉不对 - 我必须遗漏一些东西。

1 个答案:

答案 0 :(得分:0)

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