首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Node中的V8堆栈跟踪中过滤核心模块

从Node中的V8堆栈跟踪中过滤核心模块
EN

Stack Overflow用户
提问于 2016-08-14 16:40:25
回答 3查看 175关注 0票数 0

我正在从Error对象中挂钩一个堆栈跟踪,并返回一个callSite对象数组,我想过滤掉Node和本机站点。大多数情况下,这不是问题,我只需在path.relative(process.cwd(), t.getFileName())上运行regex匹配,因为大多数文件都有其完整的路径名。但是,有些模块具有不限定名,例如作为核心模块的events.js,因此该方法将失败。

我有几个主意像..。

  1. 注册我想要针对的模块的文件名,例如,我可以从项目目录中收集所有.js文件。
  2. 我注意到events.js不在缓存(require.cache)中,所以也许所有核心模块都是这样,所以如果在缓存中找不到它们,我就可以将它们标记为核心。不过,这似乎有点沉重。

有更好的方法吗?

EN

回答 3

Stack Overflow用户

发布于 2016-08-14 17:15:42

你是说除了核心节点the之外,所有的路径都是绝对的?假设核心模块都位于同一个目录(我还没有检查),您可以用path.resolve(coreModulesDir, t.getFileName())替换path.resolve(coreModulesDir, t.getFileName()),其中coreModulesDir是核心模块的绝对路径。

票数 0
EN

Stack Overflow用户

发布于 2016-08-15 02:54:57

答案是使用process.binding或更安全的require('builtin-modules'),因为process.binding不是公共的。

票数 0
EN

Stack Overflow用户

发布于 2020-11-19 05:29:48

您可以使用path.isAbsolute作为核心模块将有一个相对路径,您的文件将有一个绝对路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38944318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档