Skip to content

Commit a9f9a23

Browse files
authored
fix(gatsby): handle in dev-ssr when a page is deleted (#28325)
1 parent 064a16f commit a9f9a23

File tree

2 files changed

+23
-17
lines changed

2 files changed

+23
-17
lines changed

integration-tests/ssr/__tests__/ssr.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,20 +36,20 @@ describe(`SSR`, () => {
3636
`http://localhost:8000/bad-page/`
3737
).then(res => res.text())
3838
expect(rawDevHtml).toMatchSnapshot()
39-
// fs.remove(dest)
39+
fs.remove(dest)
4040

41-
// // After the page is gone, it'll 404.
42-
// await new Promise(resolve => {
43-
// setTimeout(() => {
44-
// const testInterval = setInterval(() => {
45-
// fetch(pageUrl).then(res => {
46-
// if (res.status === 404) {
47-
// clearInterval(testInterval)
48-
// resolve()
49-
// }
50-
// })
51-
// }, 400)
52-
// }, 400)
53-
// })
41+
// After the page is gone, it'll 404.
42+
await new Promise(resolve => {
43+
setTimeout(() => {
44+
const testInterval = setInterval(() => {
45+
fetch(pageUrl).then(res => {
46+
if (res.status === 404) {
47+
clearInterval(testInterval)
48+
resolve()
49+
}
50+
})
51+
}, 400)
52+
}, 400)
53+
})
5454
})
5555
})

packages/gatsby/src/utils/dev-ssr/render-dev-html.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,13 @@ export const renderDevHTML = ({
135135
createServerVisitedPage(pageObj.componentChunkName)
136136

137137
// Ensure the query has been run and written out.
138-
await getPageDataExperimental(pageObj.path)
138+
try {
139+
await getPageDataExperimental(pageObj.path)
140+
} catch {
141+
// If we can't get the page, it was probably deleted recently
142+
// so let's just do a 404 page.
143+
return reject(`404 page`)
144+
}
139145

140146
// Wait for public/render-page.js to update w/ the page component.
141147
const found = await ensurePathComponentInSSRBundle(pageObj, directory)
@@ -158,8 +164,8 @@ export const renderDevHTML = ({
158164
directory,
159165
isClientOnlyPage,
160166
})
161-
resolve(htmlString)
167+
return resolve(htmlString)
162168
} catch (error) {
163-
reject(error)
169+
return reject(error)
164170
}
165171
})

0 commit comments

Comments
 (0)