Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/fresh-balloons-glow.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'astro': patch
---

Fixes an issue where HMR would not trigger when modifying files while using @astrojs/cloudflare with prerenderEnvironment: 'node' enabled.
34 changes: 34 additions & 0 deletions packages/astro/e2e/cloudflare-node-prerender-hmr.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { expect } from '@playwright/test';
import { testFactory } from './test-utils.js';

const test = testFactory(import.meta.url, {
root: './fixtures/cloudflare-node-prerender-hmr/',
devToolbar: {
enabled: false,
},
});

let devServer;

test.beforeAll(async ({ astro }) => {
devServer = await astro.startDevServer();
});

test.afterAll(async () => {
await devServer.stop();
});

test.describe('Astro page', () => {
test('refresh with HMR', async ({ page, astro }) => {
await page.goto(astro.resolveUrl('/'));

const h = page.locator('h1');
await expect(h, 'original text set').toHaveText('Original content');

await astro.editFile('./src/pages/index.astro', (original) =>
original.replaceAll('Original', 'Updated'),
);

await expect(h, 'text changed').toHaveText('Updated content');
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// @ts-check
import cloudflare from '@astrojs/cloudflare';
import { defineConfig } from 'astro/config';

export default defineConfig({
adapter: cloudflare({
prerenderEnvironment: 'node',
}),
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"name": "@test/astro-cloudflare-node-prerender-mdx",
"version": "0.0.0",
"private": true,
"scripts": {
"dev": "astro dev",
"build": "astro build"
},
"dependencies": {
"@astrojs/cloudflare": "workspace:*",
"astro": "workspace:*"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
---
<html>
<head><title>Original content</title></head>
<body><h1>Original content</h1></body>
</html>
4 changes: 2 additions & 2 deletions packages/astro/src/vite-plugin-hmr-reload/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { EnvironmentModuleNode, Plugin } from 'vite';
import { ASTRO_VITE_ENVIRONMENT_NAMES } from '../core/constants.js';
import { VIRTUAL_PAGE_RESOLVED_MODULE_ID } from '../vite-plugin-pages/const.js';
import { getDevCssModuleNameFromPageVirtualModuleName } from '../vite-plugin-css/util.js';
import { isAstroServerEnvironment } from '../environments.js';

/**
* The very last Vite plugin to reload the browser if any SSR-only module are updated
Expand All @@ -15,7 +15,7 @@ export default function hmrReload(): Plugin {
hotUpdate: {
order: 'post',
handler({ modules, server, timestamp }) {
if (this.environment.name !== ASTRO_VITE_ENVIRONMENT_NAMES.ssr) return;
if (!isAstroServerEnvironment(this.environment)) return;

let hasSsrOnlyModules = false;

Expand Down
9 changes: 9 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading