Skip to content

Commit

Permalink
fix(ssr): fix ssr export * from
Browse files Browse the repository at this point in the history
fix #2158
  • Loading branch information
yyx990803 committed Feb 22, 2021
1 parent 1857652 commit 8ed67cf
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 12 deletions.
20 changes: 10 additions & 10 deletions packages/vite/src/node/ssr/__tests__/ssrTransform.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,24 +43,24 @@ test('export function decl', async () => {
expect((await ssrTransform(`export function foo() {}`, null)).code)
.toMatchInlineSnapshot(`
"function foo() {}
Object.defineProperty(__vite_ssr_exports__, \\"foo\\", { get(){ return foo }})"
Object.defineProperty(__vite_ssr_exports__, \\"foo\\", { enumerable: true, get(){ return foo }})"
`)
})

test('export class decl', async () => {
expect((await ssrTransform(`export class foo {}`, null)).code)
.toMatchInlineSnapshot(`
"class foo {}
Object.defineProperty(__vite_ssr_exports__, \\"foo\\", { get(){ return foo }})"
Object.defineProperty(__vite_ssr_exports__, \\"foo\\", { enumerable: true, get(){ return foo }})"
`)
})

test('export var decl', async () => {
expect((await ssrTransform(`export const a = 1, b = 2`, null)).code)
.toMatchInlineSnapshot(`
"const a = 1, b = 2
Object.defineProperty(__vite_ssr_exports__, \\"a\\", { get(){ return a }})
Object.defineProperty(__vite_ssr_exports__, \\"b\\", { get(){ return b }})"
Object.defineProperty(__vite_ssr_exports__, \\"a\\", { enumerable: true, get(){ return a }})
Object.defineProperty(__vite_ssr_exports__, \\"b\\", { enumerable: true, get(){ return b }})"
`)
})

Expand All @@ -69,8 +69,8 @@ test('export named', async () => {
(await ssrTransform(`const a = 1, b = 2; export { a, b as c }`, null)).code
).toMatchInlineSnapshot(`
"const a = 1, b = 2;
Object.defineProperty(__vite_ssr_exports__, \\"a\\", { get(){ return a }})
Object.defineProperty(__vite_ssr_exports__, \\"c\\", { get(){ return b }})"
Object.defineProperty(__vite_ssr_exports__, \\"a\\", { enumerable: true, get(){ return a }})
Object.defineProperty(__vite_ssr_exports__, \\"c\\", { enumerable: true, get(){ return b }})"
`)
})

Expand All @@ -80,8 +80,8 @@ test('export named from', async () => {
).toMatchInlineSnapshot(`
"const __vite_ssr_import_0__ = __vite_ssr_import__(\\"vue\\")
Object.defineProperty(__vite_ssr_exports__, \\"ref\\", { get(){ return __vite_ssr_import_0__.ref }})
Object.defineProperty(__vite_ssr_exports__, \\"c\\", { get(){ return __vite_ssr_import_0__.computed }})"
Object.defineProperty(__vite_ssr_exports__, \\"ref\\", { enumerable: true, get(){ return __vite_ssr_import_0__.ref }})
Object.defineProperty(__vite_ssr_exports__, \\"c\\", { enumerable: true, get(){ return __vite_ssr_import_0__.computed }})"
`)
})

Expand All @@ -96,7 +96,7 @@ test('named exports of imported binding', async () => {
).toMatchInlineSnapshot(`
"const __vite_ssr_import_0__ = __vite_ssr_import__(\\"vue\\")
Object.defineProperty(__vite_ssr_exports__, \\"createApp\\", { get(){ return __vite_ssr_import_0__.createApp }})"
Object.defineProperty(__vite_ssr_exports__, \\"createApp\\", { enumerable: true, get(){ return __vite_ssr_import_0__.createApp }})"
`)
})

Expand Down Expand Up @@ -126,6 +126,6 @@ test('dynamic import', async () => {
(await ssrTransform(`export const i = () => import('./foo')`, null)).code
).toMatchInlineSnapshot(`
"const i = () => __vite_ssr_dynamic_import__('./foo')
Object.defineProperty(__vite_ssr_exports__, \\"i\\", { get(){ return i }})"
Object.defineProperty(__vite_ssr_exports__, \\"i\\", { enumerable: true, get(){ return i }})"
`)
})
3 changes: 2 additions & 1 deletion packages/vite/src/node/ssr/ssrModuleLoader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ async function instantiateModule(
for (const key in sourceModule) {
if (key !== 'default') {
Object.defineProperty(ssrModule, key, {
enumerable: true,
get() {
return sourceModule[key]
}
Expand Down Expand Up @@ -145,7 +146,7 @@ async function instantiateModule(
throw e
}

mod.ssrModule = ssrModule
mod.ssrModule = Object.freeze(ssrModule)
return ssrModule
}

Expand Down
2 changes: 1 addition & 1 deletion packages/vite/src/node/ssr/ssrTransform.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ export async function ssrTransform(
function defineExport(name: string, local = name) {
s.append(
`\nObject.defineProperty(${ssrModuleExportsKey}, "${name}", ` +
`{ get(){ return ${local} }})`
`{ enumerable: true, get(){ return ${local} }})`
)
}

Expand Down

0 comments on commit 8ed67cf

Please sign in to comment.