概要
以前は Laravel+React や Rails+React のテンプレートがありましたが、長らくメンテナンスされていません。現在は Shopify が Remix を買収した関係で、公式も Remix を推奨する流れになっている気がします。
そこでRemixを使いましたが...
サブディレクトリにインストールした時にエラーがあり苦戦したのでメモとして残します。
本題
本来であれば「vite.config.js」に基準となるパスをサブディレクトリに記述にするように設定すれば、表示されるはずだが、manifestファイルというファイルをRemixが参照する際にこの基準パスを参照せず、トップディレクトリを参照してしまう不具合が存在するため、404になりエラーとなりページを表示できないらしい
↓issues参照
v3_lazyRouteDiscoveryをfalseに設定することで解決する。
vite.config.js
export default defineConfig({
base: "/test/",
server: {
allowedHosts: [host],
cors: {
preflightContinue: true,
},
port: Number(process.env.PORT || 3000),
hmr: hmrConfig,
fs: {
// See https://vitejs.dev/config/server-options.html#server-fs-allow for more information
allow: ["app", "node_modules"],
},
},
plugins: [
remix({
basename: "/test/",
ignoredRouteFiles: ["**/.*"],
future: {
v3_fetcherPersist: true,
v3_relativeSplatPath: true,
v3_throwAbortReason: true,
v3_lazyRouteDiscovery: true,
v3_singleFetch: false,
v3_routeConfig: true,
},
}),
tsconfigPaths(),
],
});
※ react-router7では修正されるらしい