diff --git a/packages/vite/src/node/ssr/__tests__/ssrTransform.spec.ts b/packages/vite/src/node/ssr/__tests__/ssrTransform.spec.ts index cb29121356cb1f..163097c3c9ff18 100644 --- a/packages/vite/src/node/ssr/__tests__/ssrTransform.spec.ts +++ b/packages/vite/src/node/ssr/__tests__/ssrTransform.spec.ts @@ -156,6 +156,21 @@ test('do not rewrite method definition', async () => { `) }) +test('do not rewrite catch clause', async () => { + expect( + ( + await ssrTransform( + `import {error} from './dependency';try {} catch(error) {}`, + null, + null + ) + ).code + ).toMatchInlineSnapshot(` + "const __vite_ssr_import_0__ = __vite_ssr_import__(\\"./dependency\\") + try {} catch(error) {}" + `) +}) + // #2221 test('should declare variable for imported super class', async () => { expect( diff --git a/packages/vite/src/node/ssr/ssrTransform.ts b/packages/vite/src/node/ssr/ssrTransform.ts index b291a74a6c00a2..0e838f1932f8c6 100644 --- a/packages/vite/src/node/ssr/ssrTransform.ts +++ b/packages/vite/src/node/ssr/ssrTransform.ts @@ -322,9 +322,10 @@ function walk( function isRefIdentifier(id: Identifier, parent: _Node, parentStack: _Node[]) { // declaration id if ( - (parent.type === 'VariableDeclarator' || + parent.type === 'CatchClause' || + ((parent.type === 'VariableDeclarator' || parent.type === 'ClassDeclaration') && - parent.id === id + parent.id === id) ) { return false }