diff --git a/packages/integrations/node/test/fixtures/prerender/src/middleware.ts b/packages/integrations/node/test/fixtures/prerender/src/middleware.ts
new file mode 100644
index 0000000000..13d619d786
--- /dev/null
+++ b/packages/integrations/node/test/fixtures/prerender/src/middleware.ts
@@ -0,0 +1,7 @@
+import { shared } from './shared';
+export const onRequest = (ctx, next) => {
+ ctx.locals = {
+ name: shared,
+ };
+ return next();
+};
diff --git a/packages/integrations/node/test/fixtures/prerender/src/pages/third.astro b/packages/integrations/node/test/fixtures/prerender/src/pages/third.astro
new file mode 100644
index 0000000000..e29377d888
--- /dev/null
+++ b/packages/integrations/node/test/fixtures/prerender/src/pages/third.astro
@@ -0,0 +1,15 @@
+---
+import { shared} from "../shared";
+export const prerender = false;
+
+const shared = Astro.locals.name;
+---
+
+
+
+ One
+
+
+{shared}
+
+
diff --git a/packages/integrations/node/test/fixtures/prerender/src/shared.ts b/packages/integrations/node/test/fixtures/prerender/src/shared.ts
new file mode 100644
index 0000000000..cd35843de7
--- /dev/null
+++ b/packages/integrations/node/test/fixtures/prerender/src/shared.ts
@@ -0,0 +1 @@
+export const shared = 'shared';
diff --git a/packages/integrations/node/test/prerender.test.js b/packages/integrations/node/test/prerender.test.js
index f55b835af4..597794be06 100644
--- a/packages/integrations/node/test/prerender.test.js
+++ b/packages/integrations/node/test/prerender.test.js
@@ -201,7 +201,7 @@ describe('Hybrid rendering', () => {
adapter: nodejs({ mode: 'standalone' }),
});
await fixture.build();
- const { startServer } = await await load();
+ const { startServer } = await load();
let res = startServer();
server = res.server;
await waitServerListen(server.server);
@@ -267,7 +267,7 @@ describe('Hybrid rendering', () => {
adapter: nodejs({ mode: 'standalone' }),
});
await fixture.build();
- const { startServer } = await await load();
+ const { startServer } = await load();
let res = startServer();
server = res.server;
await waitServerListen(server.server);
@@ -315,4 +315,35 @@ describe('Hybrid rendering', () => {
assert.equal($('h1').text(), 'One');
});
});
+
+ describe('Shared modules', async () => {
+ before(async () => {
+ process.env.PRERENDER = false;
+
+ fixture = await loadFixture({
+ root: './fixtures/prerender/',
+ output: 'hybrid',
+ adapter: nodejs({ mode: 'standalone' }),
+ });
+ await fixture.build();
+ const { startServer } = await load();
+ let res = startServer();
+ server = res.server;
+ });
+
+ after(async () => {
+ await server.stop();
+ await fixture.clean();
+ delete process.env.PRERENDER;
+ });
+
+ it('Can render SSR route', async () => {
+ const res = await fetch(`http://${server.host}:${server.port}/third`);
+ const html = await res.text();
+ const $ = cheerio.load(html);
+
+ expect(res.status).to.equal(200);
+ expect($('h1').text()).to.equal('shared');
+ });
+ });
});