From 4956713a776e9459d8ea0b6b5f18ea9d610f2559 Mon Sep 17 00:00:00 2001 From: Carlos Rodrigues Date: Sun, 1 May 2022 17:34:19 +0100 Subject: [PATCH] fix: self exported module call stack error (#1221) * fix: self exported module call stack error * remove warning --- .eslintignore | 1 + packages/vite-node/src/client.ts | 5 +++++ test/core/src/self/foo.ts | 5 +++++ test/core/src/self/index.ts | 4 ++++ test/core/test/self.test.ts | 7 +++++++ 5 files changed, 22 insertions(+) create mode 100644 test/core/src/self/foo.ts create mode 100644 test/core/src/self/index.ts create mode 100644 test/core/test/self.test.ts diff --git a/.eslintignore b/.eslintignore index b42b824c7f86..ecb0c8801995 100644 --- a/.eslintignore +++ b/.eslintignore @@ -5,3 +5,4 @@ node_modules *.d.ts coverage !.vitepress +test/core/src/self \ No newline at end of file diff --git a/packages/vite-node/src/client.ts b/packages/vite-node/src/client.ts index fd9a6bb1e7e2..1cd8823bbe42 100644 --- a/packages/vite-node/src/client.ts +++ b/packages/vite-node/src/client.ts @@ -253,6 +253,11 @@ function proxyMethod(name: 'get' | 'set' | 'has' | 'deleteProperty', tryDefault: } function exportAll(exports: any, sourceModule: any) { + // #1120 when a module exports itself it causes + // call stack error + if (exports === sourceModule) + return + // eslint-disable-next-line no-restricted-syntax for (const key in sourceModule) { if (key !== 'default') { diff --git a/test/core/src/self/foo.ts b/test/core/src/self/foo.ts new file mode 100644 index 000000000000..a71ce81458b3 --- /dev/null +++ b/test/core/src/self/foo.ts @@ -0,0 +1,5 @@ +/* eslint-disable */ + +export function foo(): true { + return true; +} \ No newline at end of file diff --git a/test/core/src/self/index.ts b/test/core/src/self/index.ts new file mode 100644 index 000000000000..1cceeb03af65 --- /dev/null +++ b/test/core/src/self/index.ts @@ -0,0 +1,4 @@ +/* eslint-disable */ + +export * from './foo'; +export * from './index'; // <-- wrong \ No newline at end of file diff --git a/test/core/test/self.test.ts b/test/core/test/self.test.ts new file mode 100644 index 000000000000..374d310c7b98 --- /dev/null +++ b/test/core/test/self.test.ts @@ -0,0 +1,7 @@ +import { expect, it } from 'vitest' +import { foo } from '../src/self' + +// #1220 self export module +it('self export', () => { + expect(foo()).toBe(true) +})