summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/large-pens-rhyme.md5
-rw-r--r--packages/astro/src/core/app/index.ts7
-rw-r--r--packages/astro/src/core/app/types.ts1
-rw-r--r--packages/astro/src/core/build/plugins/plugin-ssr.ts1
-rw-r--r--packages/astro/test/astro-assets-prefix.test.js11
5 files changed, 24 insertions, 1 deletions
diff --git a/.changeset/large-pens-rhyme.md b/.changeset/large-pens-rhyme.md
new file mode 100644
index 000000000..b5faeee49
--- /dev/null
+++ b/.changeset/large-pens-rhyme.md
@@ -0,0 +1,5 @@
+---
+'astro': patch
+---
+
+Fixes bug with assetsPrefix not being prepended to component-url and renderer-url in astro islands when using SSR mode.
diff --git a/packages/astro/src/core/app/index.ts b/packages/astro/src/core/app/index.ts
index 328769f2a..69668dbcf 100644
--- a/packages/astro/src/core/app/index.ts
+++ b/packages/astro/src/core/app/index.ts
@@ -21,6 +21,7 @@ import {
} from '../render/index.js';
import { RouteCache } from '../render/route-cache.js';
import {
+ createAssetLink,
createLinkStylesheetElementSet,
createModuleScriptElement,
} from '../render/ssr-element.js';
@@ -71,7 +72,11 @@ export class App {
return bundlePath;
}
default: {
- return prependForwardSlash(joinPaths(manifest.base, bundlePath));
+ return createAssetLink(
+ bundlePath,
+ manifest.base,
+ manifest.assetsPrefix
+ );
}
}
},
diff --git a/packages/astro/src/core/app/types.ts b/packages/astro/src/core/app/types.ts
index b7b5fa45a..ab91c13ca 100644
--- a/packages/astro/src/core/app/types.ts
+++ b/packages/astro/src/core/app/types.ts
@@ -31,6 +31,7 @@ export interface SSRManifest {
routes: RouteInfo[];
site?: string;
base?: string;
+ assetsPrefix?: string;
markdown: MarkdownRenderingOptions;
pageMap: Map<ComponentPath, ComponentInstance>;
renderers: SSRLoadedRenderer[];
diff --git a/packages/astro/src/core/build/plugins/plugin-ssr.ts b/packages/astro/src/core/build/plugins/plugin-ssr.ts
index d3776cd51..837c72b72 100644
--- a/packages/astro/src/core/build/plugins/plugin-ssr.ts
+++ b/packages/astro/src/core/build/plugins/plugin-ssr.ts
@@ -212,6 +212,7 @@ function buildManifest(
routes,
site: settings.config.site,
base: settings.config.base,
+ assetsPrefix: settings.config.build.assetsPrefix,
markdown: settings.config.markdown,
pageMap: null as any,
componentMetadata: Array.from(internals.componentMetadata),
diff --git a/packages/astro/test/astro-assets-prefix.test.js b/packages/astro/test/astro-assets-prefix.test.js
index 7cbfe274c..be80d4601 100644
--- a/packages/astro/test/astro-assets-prefix.test.js
+++ b/packages/astro/test/astro-assets-prefix.test.js
@@ -98,6 +98,17 @@ describe('Assets Prefix - Server', () => {
expect(imgAsset.attr('src')).to.match(assetsPrefixRegex);
});
+ it('react component astro-island should import from assetsPrefix', async () => {
+ const request = new Request('http://example.com/custom-base/');
+ const response = await app.render(request);
+ expect(response.status).to.equal(200);
+ const html = await response.text();
+ const $ = cheerio.load(html);
+ const island = $('astro-island');
+ expect(island.attr('component-url')).to.match(assetsPrefixRegex);
+ expect(island.attr('renderer-url')).to.match(assetsPrefixRegex);
+ });
+
it('markdown image src start with assetsPrefix', async () => {
const request = new Request('http://example.com/custom-base/markdown/');
const response = await app.render(request);