summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/heavy-adults-obey.md5
-rw-r--r--packages/astro/src/core/app/index.ts14
-rw-r--r--packages/astro/src/core/app/types.ts2
-rw-r--r--packages/astro/src/core/build/vite-plugin-ssr.ts2
4 files changed, 20 insertions, 3 deletions
diff --git a/.changeset/heavy-adults-obey.md b/.changeset/heavy-adults-obey.md
new file mode 100644
index 000000000..af35b5825
--- /dev/null
+++ b/.changeset/heavy-adults-obey.md
@@ -0,0 +1,5 @@
+---
+'astro': patch
+---
+
+fixes injectscript in ssr mode
diff --git a/packages/astro/src/core/app/index.ts b/packages/astro/src/core/app/index.ts
index 261d8f385..b963b5794 100644
--- a/packages/astro/src/core/app/index.ts
+++ b/packages/astro/src/core/app/index.ts
@@ -78,7 +78,19 @@ export class App {
const renderers = manifest.renderers;
const info = this.#routeDataToRouteInfo.get(routeData!)!;
const links = createLinkStylesheetElementSet(info.links, manifest.site);
- const scripts = createModuleScriptElementWithSrcSet(info.scripts, manifest.site);
+
+ const filteredScripts = info.scripts.filter(script => typeof script !== 'string' && script?.stage !== 'head-inline') as string[];
+ const scripts = createModuleScriptElementWithSrcSet(filteredScripts, manifest.site);
+
+ // Add all injected scripts to the page.
+ for (const script of info.scripts) {
+ if (typeof script !== 'string' && script.stage === 'head-inline') {
+ scripts.add({
+ props: {},
+ children: script.children,
+ });
+ }
+ }
const result = await render({
links,
diff --git a/packages/astro/src/core/app/types.ts b/packages/astro/src/core/app/types.ts
index aa4481141..6a5b55760 100644
--- a/packages/astro/src/core/app/types.ts
+++ b/packages/astro/src/core/app/types.ts
@@ -12,7 +12,7 @@ export interface RouteInfo {
routeData: RouteData;
file: string;
links: string[];
- scripts: string[];
+ scripts: Array<string | {children: string, stage: string}>;
}
export type SerializedRouteInfo = Omit<RouteInfo, 'routeData'> & {
diff --git a/packages/astro/src/core/build/vite-plugin-ssr.ts b/packages/astro/src/core/build/vite-plugin-ssr.ts
index faf6a94d8..38b30b3df 100644
--- a/packages/astro/src/core/build/vite-plugin-ssr.ts
+++ b/packages/astro/src/core/build/vite-plugin-ssr.ts
@@ -109,7 +109,7 @@ function buildManifest(
routes.push({
file: '',
links: Array.from(pageData.css),
- scripts,
+ scripts: [...scripts, ...astroConfig._ctx.scripts.filter(script => script.stage === 'head-inline').map(({stage, content}) => ({stage, children: content}))],
routeData: serializeRouteData(pageData.route),
});
}