summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--packages/astro/src/core/app/index.ts28
-rw-r--r--packages/astro/src/core/build/static-build.ts2
-rw-r--r--packages/integrations/node/test/prerender-404-500.test.js35
3 files changed, 34 insertions, 31 deletions
diff --git a/packages/astro/src/core/app/index.ts b/packages/astro/src/core/app/index.ts
index 900efc682..76958a549 100644
--- a/packages/astro/src/core/app/index.ts
+++ b/packages/astro/src/core/app/index.ts
@@ -286,14 +286,17 @@ export class App {
const errorRouteData = matchRoute('/' + status, this.#manifestData);
const url = new URL(request.url);
if (errorRouteData) {
- if (errorRouteData.prerender){
- const maybeDotHtml = errorRouteData.route.endsWith(`/${status}`) ? '.html' : ''
- const statusURL = new URL(`${this.#baseWithoutTrailingSlash}/${status}${maybeDotHtml}`, url);
+ if (errorRouteData.prerender) {
+ const maybeDotHtml = errorRouteData.route.endsWith(`/${status}`) ? '.html' : '';
+ const statusURL = new URL(
+ `${this.#baseWithoutTrailingSlash}/${status}${maybeDotHtml}`,
+ url
+ );
const response = await fetch(statusURL.toString());
// response for /404.html and 500.html is 200, which is not meaningful
// so we create an override
- const override = { status }
+ const override = { status };
return this.#mergeResponses(response, originalResponse, override);
}
@@ -322,27 +325,28 @@ export class App {
return response;
}
- #mergeResponses(newResponse: Response, oldResponse?: Response, override?: { status : 404 | 500 }) {
+ #mergeResponses(newResponse: Response, oldResponse?: Response, override?: { status: 404 | 500 }) {
if (!oldResponse) {
if (override !== undefined) {
return new Response(newResponse.body, {
status: override.status,
statusText: newResponse.statusText,
- headers: newResponse.headers
- })
+ headers: newResponse.headers,
+ });
}
return newResponse;
}
-
+
const { statusText, headers } = oldResponse;
// If the the new response did not have a meaningful status, an override may have been provided
// If the original status was 200 (default), override it with the new status (probably 404 or 500)
// Otherwise, the user set a specific status while rendering and we should respect that one
- const status =
- override?.status ? override.status :
- oldResponse.status === 200 ? newResponse.status :
- oldResponse.status
+ const status = override?.status
+ ? override.status
+ : oldResponse.status === 200
+ ? newResponse.status
+ : oldResponse.status;
return new Response(newResponse.body, {
status,
diff --git a/packages/astro/src/core/build/static-build.ts b/packages/astro/src/core/build/static-build.ts
index ea5bcf7dd..fb16b433d 100644
--- a/packages/astro/src/core/build/static-build.ts
+++ b/packages/astro/src/core/build/static-build.ts
@@ -341,7 +341,7 @@ async function cleanStaticOutput(opts: StaticBuildOptions, internals: BuildInter
// Replace exports (only prerendered pages) with a noop
let value = 'const noop = () => {};';
for (const e of exports) {
- if (e.n === 'default') value += `\n export default noop;`
+ if (e.n === 'default') value += `\n export default noop;`;
else value += `\nexport const ${e.n} = noop;`;
}
await fs.promises.writeFile(url, value, { encoding: 'utf8' });
diff --git a/packages/integrations/node/test/prerender-404-500.test.js b/packages/integrations/node/test/prerender-404-500.test.js
index 33cebab5b..4e3edff1a 100644
--- a/packages/integrations/node/test/prerender-404-500.test.js
+++ b/packages/integrations/node/test/prerender-404-500.test.js
@@ -61,18 +61,18 @@ describe('Prerender 404', () => {
const res1 = await fetch(url);
const res2 = await fetch(url);
const res3 = await fetch(url);
-
+
expect(res1.status).to.equal(404);
expect(res2.status).to.equal(404);
expect(res3.status).to.equal(404);
-
+
const html1 = await res1.text();
const html2 = await res2.text();
const html3 = await res3.text();
expect(html1).to.equal(html2);
expect(html2).to.equal(html3);
-
+
const $ = cheerio.load(html1);
expect($('body').text()).to.equal('Page does not exist');
@@ -90,7 +90,7 @@ describe('Prerender 404', () => {
const html2 = await response2.text();
const html3 = await response3.text();
- expect(html1).to.contain("Something went wrong");
+ expect(html1).to.contain('Something went wrong');
expect(html1).to.equal(html2);
expect(html2).to.equal(html3);
@@ -100,11 +100,10 @@ describe('Prerender 404', () => {
const response = await fetch(`http://${server.host}:${server.port}/some-base/fivehundred`);
const html = await response.text();
const $ = cheerio.load(html);
-
+
// length will be 0 if the stylesheet does not get included
expect($('link[rel=stylesheet]')).to.have.a.lengthOf(1);
});
-
});
describe('Without base', async () => {
@@ -143,22 +142,22 @@ describe('Prerender 404', () => {
});
it('Can handle prerendered 404', async () => {
- const url = `http://${server.host}:${server.port}/some-base/missing`
+ const url = `http://${server.host}:${server.port}/some-base/missing`;
const res1 = await fetch(url);
const res2 = await fetch(url);
const res3 = await fetch(url);
-
+
expect(res1.status).to.equal(404);
expect(res2.status).to.equal(404);
expect(res3.status).to.equal(404);
-
+
const html1 = await res1.text();
const html2 = await res2.text();
const html3 = await res3.text();
expect(html1).to.equal(html2);
expect(html2).to.equal(html3);
-
+
const $ = cheerio.load(html1);
expect($('body').text()).to.equal('Page does not exist');
@@ -207,22 +206,22 @@ describe('Hybrid 404', () => {
});
it('Can handle prerendered 404', async () => {
- const url = `http://${server.host}:${server.port}/some-base/missing`
+ const url = `http://${server.host}:${server.port}/some-base/missing`;
const res1 = await fetch(url);
const res2 = await fetch(url);
const res3 = await fetch(url);
-
+
expect(res1.status).to.equal(404);
expect(res2.status).to.equal(404);
expect(res3.status).to.equal(404);
-
+
const html1 = await res1.text();
const html2 = await res2.text();
const html3 = await res3.text();
expect(html1).to.equal(html2);
expect(html2).to.equal(html3);
-
+
const $ = cheerio.load(html1);
expect($('body').text()).to.equal('Page does not exist');
@@ -264,22 +263,22 @@ describe('Hybrid 404', () => {
});
it('Can handle prerendered 404', async () => {
- const url = `http://${server.host}:${server.port}/missing`
+ const url = `http://${server.host}:${server.port}/missing`;
const res1 = await fetch(url);
const res2 = await fetch(url);
const res3 = await fetch(url);
-
+
expect(res1.status).to.equal(404);
expect(res2.status).to.equal(404);
expect(res3.status).to.equal(404);
-
+
const html1 = await res1.text();
const html2 = await res2.text();
const html3 = await res3.text();
expect(html1).to.equal(html2);
expect(html2).to.equal(html3);
-
+
const $ = cheerio.load(html1);
expect($('body').text()).to.equal('Page does not exist');