From aad5ac67e43e44a7fcdaabac4f7358e0ef4d2eb2 Mon Sep 17 00:00:00 2001 From: StephenFang Date: Thu, 21 Aug 2025 22:30:10 +0800 Subject: [PATCH] fix(og-images): wrap Buffer in Uint8Array for Response body (#568) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Astro uses Web API typings; Response doesn’t accept Node Buffer. Convert the generated OG image Buffer to Uint8Array before constructing Response to satisfy BodyInit and fix the build/type error. Closes #560 --- src/pages/og.png.ts | 6 ++++-- src/pages/posts/[...slug]/index.png.ts | 10 ++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/pages/og.png.ts b/src/pages/og.png.ts index f7d5064..f5e1c2c 100644 --- a/src/pages/og.png.ts +++ b/src/pages/og.png.ts @@ -1,7 +1,9 @@ import type { APIRoute } from "astro"; import { generateOgImageForSite } from "@/utils/generateOgImages"; -export const GET: APIRoute = async () => - new Response(await generateOgImageForSite(), { +export const GET: APIRoute = async () => { + const buffer = await generateOgImageForSite(); + return new Response(new Uint8Array(buffer), { headers: { "Content-Type": "image/png" }, }); +}; diff --git a/src/pages/posts/[...slug]/index.png.ts b/src/pages/posts/[...slug]/index.png.ts index 3295ecb..48fab2f 100644 --- a/src/pages/posts/[...slug]/index.png.ts +++ b/src/pages/posts/[...slug]/index.png.ts @@ -27,10 +27,8 @@ export const GET: APIRoute = async ({ props }) => { }); } - return new Response( - await generateOgImageForPost(props as CollectionEntry<"blog">), - { - headers: { "Content-Type": "image/png" }, - } - ); + const buffer = await generateOgImageForPost(props as CollectionEntry<"blog">); + return new Response(new Uint8Array(buffer), { + headers: { "Content-Type": "image/png" }, + }); };