From 9aa83e5f6282962ceca460ba5129d1e3c61f793e Mon Sep 17 00:00:00 2001 From: Richard Simko Date: Tue, 16 Feb 2021 15:18:45 +0100 Subject: [PATCH] fix: Code preview not working with ESM (#3262) --- packages/node/src/parsers.ts | 2 +- packages/node/test/parsers.test.ts | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/node/src/parsers.ts b/packages/node/src/parsers.ts index 1ce5502644fe..8d0c8cf6d8ab 100644 --- a/packages/node/src/parsers.ts +++ b/packages/node/src/parsers.ts @@ -144,7 +144,7 @@ export function parseStack(stack: stacktrace.StackFrame[], options?: NodeOptions const frames: StackFrame[] = stack.map(frame => { const parsedFrame: StackFrame = { colno: frame.columnNumber, - filename: frame.fileName || '', + filename: frame.fileName?.startsWith('file://') ? frame.fileName.substr(7) : frame.fileName || '', function: getFunction(frame), lineno: frame.lineNumber, }; diff --git a/packages/node/test/parsers.test.ts b/packages/node/test/parsers.test.ts index e09a6607c51f..53c4b2f682f0 100644 --- a/packages/node/test/parsers.test.ts +++ b/packages/node/test/parsers.test.ts @@ -40,6 +40,25 @@ describe('parsers.ts', () => { }); }); + test('parseStack with ESM module names', async () => { + expect.assertions(1); + + const framesWithFilePath: stacktrace.StackFrame[] = [ + { + columnNumber: 1, + fileName: 'file:///var/task/index.js', + functionName: 'module.exports../src/index.ts.fxn1', + lineNumber: 1, + methodName: 'fxn1', + native: false, + typeName: 'module.exports../src/index.ts', + }, + ]; + return Parsers.parseStack(framesWithFilePath).then(_ => { + expect(spy).toHaveBeenCalledTimes(1); + }); + }); + test('parseStack with adding different file', done => { expect.assertions(2); let mockCalls = 0;