gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:38:06 26 4
gpt4 key购买 nike

在满足以下要求的情况下,尝试找到确定模块 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com