Closed predaytor closed 5 months ago
Found the solution, but still not sure how to run Hono on Vite dev server.
/server/index.ts
:
import { logDevReady } from '@remix-run/cloudflare';
import { createPagesFunctionHandler } from '@remix-run/cloudflare-pages';
import { Hono } from 'hono';
import type { EventContext } from 'hono/cloudflare-pages';
import { csrf } from 'hono/csrf';
import { logger } from 'hono/logger';
import { prettyJSON } from 'hono/pretty-json';
import { secureHeaders } from 'hono/secure-headers';
import { staticAssets } from 'remix-hono/cloudflare';
import { trailingSlash } from 'remix-hono/trailing-slash';
import * as build from '../build/server';
import { getLoadContext } from './load-context';
if (process.env.NODE_ENV === 'development') logDevReady(build);
export type ContextEnv = { Bindings: Required<Env> & { eventContext: EventContext } };
const app = new Hono<ContextEnv>({ strict: true });
app.use(csrf());
app.use(logger());
app.use(prettyJSON({ space: 4 }));
app.use(secureHeaders());
app.use(trailingSlash());
app.use(staticAssets({ cache: { public: true, maxAge: '1y', immutable: true } }));
app.use(async c => await createPagesFunctionHandler({ build, getLoadContext })(c.env.eventContext));
export default app;
/functions/[[path]].ts
:
import { handle } from 'hono/cloudflare-pages';
import server from '../server/index';
export const onRequest = handle(server);
Not sure how to configure
getLoadContext
for both remix middleware andremixCloudflareDevProxy
to simulate Cloudflare environment for Vite dev server.Current default setup without Hono:
load-context.ts
:/functions/[[path]].ts
:vite.config.ts
:From this package source,
getLoadContext
accepts a HonoContext
object, which differs from the interface provided byremixCloudflareDevProxy
with additionalPlatformProxy
bindings:/src/handler.ts
:/node_modules/@remix-run/cloudflare-pages/dist/worker.d.ts
: