Skip to content

Commit

Permalink
fix(ssr): always throw error when evaluating an wrong SSR module
Browse files Browse the repository at this point in the history
  • Loading branch information
TrickyPi committed Mar 5, 2022
1 parent c46b56d commit 2e5a438
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 0 deletions.
@@ -0,0 +1,2 @@
export const bad = 1
throw new Error('it is an expected error')
29 changes: 29 additions & 0 deletions packages/vite/src/node/ssr/__tests__/ssrModuleLoader.spec.ts
@@ -0,0 +1,29 @@
import { createServer } from '../../index'
import { resolve } from 'path'

const badjs = resolve(__dirname, './fixtures/ssrModuleLoader-bad.js')
const THROW_MESSAGE = 'it is an expected error'

test('always throw error when evaluating an wrong SSR module', async () => {
const viteServer = await createServer()
const spy = jest.spyOn(console, 'error').mockImplementation(() => {})
const expectedErrors = []
for (const i of [0, 1]) {
try {
await viteServer.ssrLoadModule(badjs)
} catch (e) {
expectedErrors.push(e)
}
}
await viteServer.close()
expect(expectedErrors).toHaveLength(2)
expectedErrors.forEach((error) => {
expect(error?.message).toContain(THROW_MESSAGE)
})
expect(spy).toBeCalledTimes(2)
spy.mock.calls.forEach(([info]) => {
expect(info).toContain('Error when evaluating SSR module')
expect(info).toContain(THROW_MESSAGE)
})
spy.mockClear()
})
1 change: 1 addition & 0 deletions packages/vite/src/node/ssr/ssrModuleLoader.ts
Expand Up @@ -202,6 +202,7 @@ async function instantiateModule(
ssrExportAll
)
} catch (e) {
mod.ssrModule = null
if (e.stack && fixStacktrace !== false) {
const stacktrace = ssrRewriteStacktrace(e.stack, moduleGraph)
rebindErrorStacktrace(e, stacktrace)
Expand Down

0 comments on commit 2e5a438

Please sign in to comment.