Skip to content

Commit 1a9b0f6

Browse files
authored
improve internal error logging (#55582)
### What? Makes sure that errors that have no user code in stack trace still show an stack trace Closes WEB-1605
1 parent 0631549 commit 1a9b0f6

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

packages/next/src/server/dev/log-app-dir-error.ts

+11-8
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,24 @@ import * as Log from '../../build/output/log'
33

44
export function logAppDirError(err: any) {
55
if (isError(err) && err?.stack) {
6-
const filteredStack = err.stack
7-
.split('\n')
8-
.map((line: string) =>
9-
// Remove 'webpack-internal:' noise from the path
10-
line.replace(/(webpack-internal:\/\/\/|file:\/\/)(\(.*\)\/)?/, '')
11-
)
6+
const cleanedStack = err.stack.split('\n').map((line: string) =>
7+
// Remove 'webpack-internal:' noise from the path
8+
line.replace(/(webpack-internal:\/\/\/|file:\/\/)(\(.*\)\/)?/, '')
9+
)
10+
const filteredStack = cleanedStack
1211
// Only display stack frames from the user's code
1312
.filter(
1413
(line: string) =>
1514
!/next[\\/]dist[\\/]compiled/.test(line) &&
1615
!/node_modules[\\/]/.test(line) &&
1716
!/node:internal[\\/]/.test(line)
1817
)
19-
.join('\n')
20-
Log.error(filteredStack)
18+
if (filteredStack.length === 1) {
19+
// This is an error that happened outside of user code, keep full stack
20+
Log.error(`Internal error: ${cleanedStack.join('\n')}`)
21+
} else {
22+
Log.error(filteredStack.join('\n'))
23+
}
2124
if (typeof (err as any).digest !== 'undefined') {
2225
console.error(`digest: ${JSON.stringify((err as any).digest)}`)
2326
}

0 commit comments

Comments
 (0)