我挂钩了来自Error对象的堆栈跟踪并返回了一个callSite
对象的数组,我想过滤出Node核心和本地站点。大多数情况下,这不是问题,我可以在path.relative(process.cwd(), t.getFileName())
上运行正则表达式匹配,因为大多数文件都将具有完整路径名。但是,某些模块的名称不合格,例如events.js
这是一个核心模块,因此此方法将失败。从节点JS中的V8堆栈跟踪中过滤核心模块
我有几个想法一样......
- 注册我要定位的模块文件名,例如我可以收集所有的.js文件从项目目录。
- 我注意到
events.js
不在高速缓存中(require.cache
),所以也许这是所有核心模块的情况,所以如果我在高速缓存中找不到它们,我可以将它们标记为核心。这看起来有点沉重。
有没有更好的方法来做到这一点?
问题是核心模块与项目根目录中的文件没有区别。但是,你给了我一个想法:也许我可以使用'require.resolve'来获取核心模块的完整路径。 –