RemixとReact Routerが統合された。本ブログはRemixで構築しているため、React Routerへの移行を行うことにした。
以下を参考に進める
https://reactrouter.com/upgrading/remix
npm install @remix-run/{dev,react,node,etc.}@2
自分の環境だと、dev, react, cloudflare, cloudflare-pages
https://remix.run/docs/en/main/start/future-flags#v3_fetcherpersist
declare module "@remix-run/cloudflare" {
// or node, deno, etc.
interface Future {
v3_singleFetch: true;
}
}
@remix-run/cloudflare
のjsonでラップせず、生のオブジェクトを返すreturn json(data)
-> return data
import {
cloudflareDevProxyVitePlugin,
vitePlugin as remix,
} from "@remix-run/dev";
import { defineConfig } from "vite";
import tsconfigPaths from "vite-tsconfig-paths";
declare module "@remix-run/cloudflare" {
// or cloudflare, deno, etc.
interface Future {
v3_singleFetch: true;
}
}
export default defineConfig({
plugins: [
cloudflareDevProxyVitePlugin(),
remix({
future: {
v3_fetcherPersist: true,
v3_relativeSplatPath: true,
v3_throwAbortReason: true,
v3_singleFetch: true,
v3_lazyRouteDiscovery: true,
},
}),
tsconfigPaths(),
],
});
npx codemod remix/2/react-router/upgrade
npm install
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/@react-router%2fcloudflare-pages - Not found
npm ERR! 404
npm ERR! 404 '@react-router/cloudflare-pages@^7.0.0' is not in this registry.
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
npm ERR! A complete log of this run can be found in: /Users/wakabayashitoshiyuu/.npm/_logs/2024-12-28T01_53_13_408Z-debug-0.log
@react-router/cloudflare-pages
を削除して再度 npm install
@react-router/cloudflare-pages
importを @react-router/cloudflare
に置換functions/[[path]].ts
import { createPagesFunctionHandler } from "@react-router/cloudflare";
import type { ServerBuild } from "react-router";
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore - the server build file is generated by `remix vite:build`
// eslint-disable-next-line import/no-unresolved
import * as build from "../build/server";
export const onRequest = createPagesFunctionHandler({
build: build as unknown as ServerBuild,
});
import { reactRouter } from "@react-router/dev/vite";
import { defineConfig } from "vite";
import tsconfigPaths from "vite-tsconfig-paths";
import { cloudflareDevProxy } from "@react-router/dev/vite/cloudflare";
declare module "@react-router/cloudflare" {
// or cloudflare, deno, etc.
interface Future {
v3_singleFetch: true;
}
}
export default defineConfig({
plugins: [cloudflareDevProxy(), reactRouter(), tsconfigPaths()],
});
react-router
インポートが存在するファイルが出てくるのでまとめる@react-router/fs-routes
touch app/routes.ts
import { type RouteConfig } from "@react-router/dev/routes";
import { flatRoutes } from "@react-router/fs-routes";
export default flatRoutes() satisfies RouteConfig;
tsconfig.json
修正@remix-run/cloudflare
-> @react-router/cloudflare
npm run dev
で起動確認以上
富山在住のプログラマー。
フルリモートで働いています。
Categories
AWS
Cloudflare
Docker
Github
go
html
JavaScript
microCMS
MySQL
Monthly Archives
2025/01 (1)
2024/12 (4)
2024/11 (3)
2024/10 (1)
2024/09 (3)
2024/08 (7)
2024/07 (7)
2024/06 (4)
2024/05 (5)
2024/04 (6)