Skip to content

Commit ed29dee

Browse files
authored
fix(ssr): fix execution order of re-export (#19841)
1 parent 3db608a commit ed29dee

File tree

11 files changed

+98
-24
lines changed

11 files changed

+98
-24
lines changed

packages/vite/src/node/ssr/__tests__/ssrTransform.spec.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,8 @@ test('export then import minified', async () => {
234234
`export * from 'vue';import {createApp} from 'vue';`,
235235
),
236236
).toMatchInlineSnapshot(`
237-
"const __vite_ssr_import_0__ = await __vite_ssr_import__("vue", {"importedNames":["createApp"]});const __vite_ssr_import_1__ = await __vite_ssr_import__("vue");__vite_ssr_exportAll__(__vite_ssr_import_1__);
238-
"
237+
"const __vite_ssr_import_0__ = await __vite_ssr_import__("vue");__vite_ssr_exportAll__(__vite_ssr_import_0__);
238+
const __vite_ssr_import_1__ = await __vite_ssr_import__("vue", {"importedNames":["createApp"]});"
239239
`)
240240
})
241241

@@ -1264,14 +1264,14 @@ export * from './b'
12641264
console.log(foo + 2)
12651265
`),
12661266
).toMatchInlineSnapshot(`
1267-
"const __vite_ssr_import_0__ = await __vite_ssr_import__("./foo", {"importedNames":["foo"]});
1268-
console.log(__vite_ssr_import_0__.foo + 1);
1269-
const __vite_ssr_import_1__ = await __vite_ssr_import__("./a");__vite_ssr_exportAll__(__vite_ssr_import_1__);
1267+
"const __vite_ssr_import_0__ = await __vite_ssr_import__("./a");__vite_ssr_exportAll__(__vite_ssr_import_0__);
1268+
;const __vite_ssr_import_1__ = await __vite_ssr_import__("./foo", {"importedNames":["foo"]});const __vite_ssr_import_2__ = await __vite_ssr_import__("./b");__vite_ssr_exportAll__(__vite_ssr_import_2__);
12701269
;
1270+
console.log(__vite_ssr_import_1__.foo + 1);
12711271
1272-
const __vite_ssr_import_2__ = await __vite_ssr_import__("./b");__vite_ssr_exportAll__(__vite_ssr_import_2__);
1273-
;
1274-
console.log(__vite_ssr_import_0__.foo + 2)
1272+
1273+
1274+
console.log(__vite_ssr_import_1__.foo + 2)
12751275
"
12761276
`)
12771277
})
@@ -1288,9 +1288,9 @@ console.log(bar)
12881288
"Object.defineProperty(__vite_ssr_exports__, "default", { enumerable: true, configurable: true, get(){ return __vite_ssr_export_default__ }});
12891289
Object.defineProperty(__vite_ssr_exports__, "bar", { enumerable: true, configurable: true, get(){ return __vite_ssr_import_1__ }});
12901290
1291-
const __vite_ssr_import_0__ = await __vite_ssr_import__("./foo", {"importedNames":["foo"]});
1291+
const __vite_ssr_import_0__ = await __vite_ssr_import__("./foo", {"importedNames":["foo"]});const __vite_ssr_import_1__ = await __vite_ssr_import__("./bar");;
12921292
const __vite_ssr_export_default__ = (0,__vite_ssr_import_0__.foo)();
1293-
const __vite_ssr_import_1__ = await __vite_ssr_import__("./bar");;
1293+
12941294
console.log(bar)
12951295
"
12961296
`)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export { IonTypes } from './IonTypes.js';
2+
import * as dom from './dom/index.js';
3+
export { dom };
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export const IonTypes = {
2+
BLOB: 'Blob',
3+
};
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
reproduction from https://github.com/vitest-dev/vitest/issues/4143#issuecomment-1724526796
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import { IonTypes } from '../Ion.js';
2+
export const Blob = IonTypes.BLOB;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { Blob } from './Blob.js';
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
console.log('dep1');
2+
export {};
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
console.log('dep2');
2+
export {};
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from './dep1.js';
2+
import './dep2.js'

packages/vite/src/node/ssr/runtime/__tests__/server-runtime.spec.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,36 @@ describe('module runner initialization', async () => {
302302
)
303303
})
304304

305+
it(`cyclic with mixed import and re-export`, async ({ runner }) => {
306+
const mod = await runner.import('/fixtures/cyclic2/test7/Ion.js')
307+
expect(mod).toMatchInlineSnapshot(`
308+
{
309+
"IonTypes": {
310+
"BLOB": "Blob",
311+
},
312+
"dom": {
313+
"Blob": "Blob",
314+
},
315+
}
316+
`)
317+
})
318+
319+
it(`execution order with mixed import and re-export`, async ({
320+
runner,
321+
onTestFinished,
322+
}) => {
323+
const spy = vi.spyOn(console, 'log')
324+
onTestFinished(() => spy.mockRestore())
325+
326+
await runner.import('/fixtures/execution-order-re-export/index.js')
327+
expect(spy.mock.calls.map((v) => v[0])).toMatchInlineSnapshot(`
328+
[
329+
"dep1",
330+
"dep2",
331+
]
332+
`)
333+
})
334+
305335
it(`live binding (export default function f)`, async ({ runner }) => {
306336
const mod = await runner.import('/fixtures/live-binding/test1/index.js')
307337
expect(mod.default).toMatchInlineSnapshot(`

0 commit comments

Comments
 (0)