diff options
author | 2023-10-17 15:42:01 +0530 | |
---|---|---|
committer | 2023-10-17 12:12:01 +0200 | |
commit | 11f45b9a3216f60317e1c54bb3e6c4e9e0add342 (patch) | |
tree | 87c5bbeb82c154117275bc6d5d1ffd0ee3feaa40 | |
parent | 3468c06f56447ee0aa4115b70f658780e6df75c5 (diff) | |
download | astro-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.md | 5 | ||||
-rw-r--r-- | packages/astro/src/assets/endpoint/node.ts | 7 |
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; |