我掛鉤了來自Error對象的堆棧跟蹤並返回了一個callSite
對象的數組,我想過濾出Node核心和本地站點。大多數情況下,這不是問題,我可以在path.relative(process.cwd(), t.getFileName())
上運行正則表達式匹配,因爲大多數文件都將具有完整路徑名。但是,某些模塊的名稱不合格,例如events.js
這是一個核心模塊,因此此方法將失敗。從節點JS中的V8堆棧跟蹤中過濾核心模塊
我有幾個想法一樣......
- 註冊我要定位的模塊文件名,例如我可以收集所有的.js文件從項目目錄。
- 我注意到
events.js
不在高速緩存中(require.cache
),所以也許這是所有核心模塊的情況,所以如果我在高速緩存中找不到它們,我可以將它們標記爲核心。這看起來有點沉重。
有沒有更好的方法來做到這一點?
問題是核心模塊與項目根目錄中的文件沒有區別。但是,你給了我一個想法:也許我可以使用'require.resolve'來獲取核心模塊的完整路徑。 –