【问题标题】:node.js - finding path of require()ing modulenode.js - 查找 require()ing 模块的路径
【发布时间】:2012-10-30 15:43:55
【问题描述】:

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

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

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

然而这感觉不对——我一定是遗漏了什么。

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-11-19
      • 2012-11-08
      • 1970-01-01
      • 2018-11-25
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-27
      相关资源
      最近更新 更多