From 35737af1cf9b16cb889ddd35a9190b083b6909af Mon Sep 17 00:00:00 2001 From: bholmesdev Date: Wed, 23 Mar 2022 22:57:32 -0400 Subject: [PATCH 1/4] fix: isSelfAccepting Preact error --- packages/astro/src/core/render/dev/index.ts | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/packages/astro/src/core/render/dev/index.ts b/packages/astro/src/core/render/dev/index.ts index 0cf909caf86d..d16cb8923aa2 100644 --- a/packages/astro/src/core/render/dev/index.ts +++ b/packages/astro/src/core/render/dev/index.ts @@ -40,21 +40,13 @@ export type ComponentPreload = [SSRLoadedRenderer[], ComponentInstance]; export type RenderResponse = { type: 'html'; html: string } | { type: 'response'; response: Response }; const svelteStylesRE = /svelte\?svelte&type=style/; -// Cache renderers to avoid re-resolving the module using Vite's `ssrLoadModule` -// This prevents an odd exception trying to resolve the same server-side module -// Multiple times. See `isSelfAccepting` issue: https://github.com/withastro/astro/pull/2852 -const rendererCache = new Map(); async function loadRenderer(viteServer: vite.ViteDevServer, renderer: AstroRenderer): Promise { - const { url } = await viteServer.moduleGraph.ensureEntryFromUrl(renderer.serverEntrypoint); - - const cachedRenderer = rendererCache.get(url); - if (cachedRenderer) { - return { ...renderer, ssr: cachedRenderer }; - } - - const mod = (await viteServer.ssrLoadModule(url)) as { default: SSRLoadedRenderer['ssr'] }; - rendererCache.set(url, mod.default); + // Vite modules can be out-of-date when using an un-resolved url + // We also encountered inconsistencies when using the resolveUrl and resolveId helpers + // We've found that pulling the ID directly from the urlToModuleMap is the most stable! + const id = viteServer.moduleGraph.urlToModuleMap.get(renderer.serverEntrypoint)?.id ?? renderer.serverEntrypoint; + const mod = (await viteServer.ssrLoadModule(id)) as { default: SSRLoadedRenderer['ssr'] }; return { ...renderer, ssr: mod.default }; } From 2eea5275e8ab83aafe45fb6a314942ed4be28b15 Mon Sep 17 00:00:00 2001 From: bholmesdev Date: Wed, 23 Mar 2022 22:58:07 -0400 Subject: [PATCH 2/4] refactor: add .js ext to preact entrypoints for consistency --- packages/integrations/preact/src/index.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/integrations/preact/src/index.ts b/packages/integrations/preact/src/index.ts index 113284c31372..c96bf1190b48 100644 --- a/packages/integrations/preact/src/index.ts +++ b/packages/integrations/preact/src/index.ts @@ -3,8 +3,8 @@ import { AstroIntegration } from 'astro'; function getRenderer() { return { name: '@astrojs/preact', - clientEntrypoint: '@astrojs/preact/client', - serverEntrypoint: '@astrojs/preact/server', + clientEntrypoint: '@astrojs/preact/client.js', + serverEntrypoint: '@astrojs/preact/server.js', jsxImportSource: 'preact', jsxTransformOptions: async () => { const { @@ -21,8 +21,8 @@ function getRenderer() { function getViteConfiguration() { return { optimizeDeps: { - include: ['@astrojs/preact/client', 'preact', 'preact/jsx-runtime', 'preact-render-to-string'], - exclude: ['@astrojs/preact/server'], + include: ['@astrojs/preact/client.js', 'preact', 'preact/jsx-runtime', 'preact-render-to-string'], + exclude: ['@astrojs/preact/server.js'], }, ssr: { external: ['preact-render-to-string'], From 90b0ea9f5c8bc8c13bd4947923ca5e1551e800ff Mon Sep 17 00:00:00 2001 From: bholmesdev Date: Wed, 23 Mar 2022 23:07:09 -0400 Subject: [PATCH 3/4] chore: changeset --- .changeset/wise-garlics-bathe.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/wise-garlics-bathe.md diff --git a/.changeset/wise-garlics-bathe.md b/.changeset/wise-garlics-bathe.md new file mode 100644 index 000000000000..1f041ca25425 --- /dev/null +++ b/.changeset/wise-garlics-bathe.md @@ -0,0 +1,6 @@ +--- +'astro': patch +'@astrojs/preact': patch +--- + +Fix `isSelfAccepting` errors when using the Preact integration with the Astro dev server From 9adf74638bde6fe349bf5ad1b5eadf6477ce7ce5 Mon Sep 17 00:00:00 2001 From: bholmesdev Date: Thu, 24 Mar 2022 12:12:50 -0400 Subject: [PATCH 4/4] fix: remove ./client and ./server from preact pkg exp --- packages/integrations/preact/package.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/integrations/preact/package.json b/packages/integrations/preact/package.json index c6b705750030..fd8d4b1b71b9 100644 --- a/packages/integrations/preact/package.json +++ b/packages/integrations/preact/package.json @@ -20,9 +20,7 @@ "homepage": "https://astro.build", "exports": { ".": "./dist/index.js", - "./client": "./client", "./client.js": "./client.js", - "./server": "./server", "./server.js": "./server.js", "./package.json": "./package.json" },