在给定以下要求的情况下,试图找到确定模块路径的正确方法();
我最终通过修补Module._load()并在闭包中捕获调用者路径来实现这一点,如下所示:github
然而这感觉不对 - 我必须遗漏一些东西。
答案 0 :(得分:0)
修补module._load
是我认为最好的方法。您只能通过module.parent.filename
获取第一个调用模块的模块。并且模块的整个children
和parent
属性仅在第一次加载时才为真。根据{{3}},如果它被缓存,你不能依赖任何东西。您可以尝试从缓存中删除自己(delete require.cache[__filename]
;),然后每次需要模块时,您都会获得正确的父级,但这会增加您的加载时间。