From c9e0bcf5653c31ffa00819083a9ce58a24e0bd17 Mon Sep 17 00:00:00 2001 From: leemove Date: Tue, 13 Apr 2021 18:13:15 +0800 Subject: [PATCH] fix(ssr): fix ssrTransform catch clause error (fix #2667) (#2966) --- .../src/node/ssr/__tests__/ssrTransform.spec.ts | 15 +++++++++++++++ packages/vite/src/node/ssr/ssrTransform.ts | 5 +++-- 2 files changed, 18 insertions(+), 2 deletions(-) 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 }