summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Rishi Raj Jain <rishi18304@iiitd.ac.in> 2023-10-17 15:42:01 +0530
committerGravatar GitHub <noreply@github.com> 2023-10-17 12:12:01 +0200
commit11f45b9a3216f60317e1c54bb3e6c4e9e0add342 (patch)
tree87c5bbeb82c154117275bc6d5d1ffd0ee3feaa40
parent3468c06f56447ee0aa4115b70f658780e6df75c5 (diff)
downloadastro-11f45b9a3216f60317e1c54bb3e6c4e9e0add342.tar.gz
astro-11f45b9a3216f60317e1c54bb3e6c4e9e0add342.tar.zst
astro-11f45b9a3216f60317e1c54bb3e6c4e9e0add342.zip
fix: _image endpoint returning a 404 for local images (#8828)
Diffstat (limited to '')
-rw-r--r--.changeset/heavy-lies-cover.md5
-rw-r--r--packages/astro/src/assets/endpoint/node.ts7
2 files changed, 11 insertions, 1 deletions
diff --git a/.changeset/heavy-lies-cover.md b/.changeset/heavy-lies-cover.md
new file mode 100644
index 000000000..589c10e26
--- /dev/null
+++ b/.changeset/heavy-lies-cover.md
@@ -0,0 +1,5 @@
+---
+'astro': patch
+---
+
+fix file system path references
diff --git a/packages/astro/src/assets/endpoint/node.ts b/packages/astro/src/assets/endpoint/node.ts
index 1e9616264..7542b5eaf 100644
--- a/packages/astro/src/assets/endpoint/node.ts
+++ b/packages/astro/src/assets/endpoint/node.ts
@@ -1,15 +1,20 @@
import { isRemotePath, removeQueryString } from '@astrojs/internal-helpers/path';
import { readFile } from 'fs/promises';
import mime from 'mime/lite.js';
+import os from 'os';
import type { APIRoute } from '../../@types/astro.js';
import { getConfiguredImageService, isRemoteAllowed } from '../internal.js';
import { etag } from '../utils/etag.js';
// @ts-expect-error
import { assetsDir, imageConfig } from 'astro:assets';
+function replaceFileSystemReferences(src: string) {
+ return os.platform().includes('win32') ? src.replace(/^\/@fs\//, '') : src.replace(/^\/@fs/, '');
+}
+
async function loadLocalImage(src: string, url: URL) {
const filePath = import.meta.env.DEV
- ? removeQueryString(src.slice('/@fs'.length))
+ ? removeQueryString(replaceFileSystemReferences(src))
: new URL('.' + src, assetsDir);
let buffer: Buffer | undefined = undefined;