Мой текущий код вставлен ниже, с некоторыми ошибками типографии встроенными. Что мне нужно сделать, чтобы сделать файл изображения доступным в коде компонента?
Код: Выделить всё
import type { Route } from "./+types/r2_image";
export function meta({ }: Route.MetaArgs) {
return [
{ title: "Data Tests: R2 image file" },
{ name: "description", content: "Testing cloudflare bindings." },
];
}
export async function loader({ context }: Route.LoaderArgs) {
// Type 'R2ObjectBody | null' is not assignable to type 'R2ObjectBody'.
// Type 'null' is not assignable to type 'R2ObjectBody'.ts(2322)
// vvvvvvv
const r2Image: R2ObjectBody = await context.cloudflare.env.CROMR2.get('conan.png');
var image = await r2Image.blob();
return { data: image };
}
export default function R2Image({ loaderData }: Route.ComponentProps) {
// Types of property 'arrayBuffer' are incompatible.
// Type 'undefined' is not assignable to type '() => Promise'.ts(2345)
// vvvvvvvvvv
const image = URL.createObjectURL(loaderData.data);
// or
// const image = URL.createObjectURL(loaderData.arrayBuffer);
return (
R2 Image File
[img]{image} /[/img]
)
}
< /code>
Этот код дает в консоли ошибку. Я считаю, что это связано с несоответствием типа в аргументе CreateObjecturl ()
Код: Выделить всё
Failed to execute 'createObjectURL' on 'URL': Overload resolution failed.
Примечание: Cloudflare Worker fetch () , кажется, не доступен для ClientLoader () . Кроме того, я бы предпочел получить это прямо со стороны сервера.
Подробнее здесь: https://stackoverflow.com/questions/796 ... r-function