summaryrefslogtreecommitdiff
path: root/packages/astro
diff options
context:
space:
mode:
Diffstat (limited to 'packages/astro')
-rw-r--r--packages/astro/src/core/build/pipeline.ts10
-rw-r--r--packages/astro/test/fixtures/middleware-full-ssr/package.json8
-rw-r--r--packages/astro/test/fixtures/middleware-full-ssr/src/error.js1
-rw-r--r--packages/astro/test/fixtures/middleware-full-ssr/src/middleware.js2
-rw-r--r--packages/astro/test/fixtures/middleware-full-ssr/src/pages/index.astro14
-rw-r--r--packages/astro/test/middleware.test.js15
6 files changed, 45 insertions, 5 deletions
diff --git a/packages/astro/src/core/build/pipeline.ts b/packages/astro/src/core/build/pipeline.ts
index 14bb08662..3908dffed 100644
--- a/packages/astro/src/core/build/pipeline.ts
+++ b/packages/astro/src/core/build/pipeline.ts
@@ -131,11 +131,11 @@ export class BuildPipeline extends Pipeline {
const renderers = await import(renderersEntryUrl.toString());
const middleware = internals.middlewareEntryPoint
- ? await import(internals.middlewareEntryPoint.toString()).then((mod) => {
- return function () {
- return { onRequest: mod.onRequest };
- };
- })
+ ? async function () {
+ // @ts-expect-error: the compiler can't understand the previous check
+ const mod = await import(internals.middlewareEntryPoint.toString());
+ return { onRequest: mod.onRequest };
+ }
: manifest.middleware;
if (!renderers) {
diff --git a/packages/astro/test/fixtures/middleware-full-ssr/package.json b/packages/astro/test/fixtures/middleware-full-ssr/package.json
new file mode 100644
index 000000000..4f8b625c0
--- /dev/null
+++ b/packages/astro/test/fixtures/middleware-full-ssr/package.json
@@ -0,0 +1,8 @@
+{
+ "name": "@test/middleware-full-ssr",
+ "version": "0.0.0",
+ "private": true,
+ "dependencies": {
+ "astro": "workspace:*"
+ }
+}
diff --git a/packages/astro/test/fixtures/middleware-full-ssr/src/error.js b/packages/astro/test/fixtures/middleware-full-ssr/src/error.js
new file mode 100644
index 000000000..6eed03a82
--- /dev/null
+++ b/packages/astro/test/fixtures/middleware-full-ssr/src/error.js
@@ -0,0 +1 @@
+throw new Error("Shoud not error at build time")
diff --git a/packages/astro/test/fixtures/middleware-full-ssr/src/middleware.js b/packages/astro/test/fixtures/middleware-full-ssr/src/middleware.js
new file mode 100644
index 000000000..0061049c1
--- /dev/null
+++ b/packages/astro/test/fixtures/middleware-full-ssr/src/middleware.js
@@ -0,0 +1,2 @@
+import "./error.js"
+export const onRequest = (_ , next) => next();
diff --git a/packages/astro/test/fixtures/middleware-full-ssr/src/pages/index.astro b/packages/astro/test/fixtures/middleware-full-ssr/src/pages/index.astro
new file mode 100644
index 000000000..395a4d695
--- /dev/null
+++ b/packages/astro/test/fixtures/middleware-full-ssr/src/pages/index.astro
@@ -0,0 +1,14 @@
+---
+const data = Astro.locals;
+---
+
+<html>
+<head>
+ <title>Testing</title>
+</head>
+<body>
+
+ <span>Index</span>
+ <p>{data?.name}</p>
+</body>
+</html>
diff --git a/packages/astro/test/middleware.test.js b/packages/astro/test/middleware.test.js
index 26bc06d77..c7c95b5b6 100644
--- a/packages/astro/test/middleware.test.js
+++ b/packages/astro/test/middleware.test.js
@@ -171,6 +171,21 @@ describe('Middleware in PROD mode, SSG', () => {
});
});
+describe('Middleware should not be executed or imported during', () => {
+ /** @type {import('./test-utils').Fixture} */
+ let fixture;
+
+ it('should build the project without errors', async () => {
+ fixture = await loadFixture({
+ root: './fixtures/middleware-full-ssr/',
+ output: 'server',
+ adapter: testAdapter({}),
+ });
+ await fixture.build();
+ assert.ok('Should build');
+ });
+});
+
describe('Middleware API in PROD mode, SSR', () => {
/** @type {import('./test-utils').Fixture} */
let fixture;