diff --git a/app/i18next.server.ts b/app/i18next.server.ts index a05e6e58..52762671 100644 --- a/app/i18next.server.ts +++ b/app/i18next.server.ts @@ -4,6 +4,7 @@ import i18n from '~/i18n'; // your i18n configuration file import HttpBackend from 'i18next-http-backend'; import { IS_CF_PAGES, + IS_VERCEL, safeRequireNodeDependency, } from '~/utils/platform-adapter'; import { RemixI18NextOption } from 'remix-i18next/build/server'; @@ -13,6 +14,8 @@ import { findLanguageJSON } from '~/languages.server'; export async function getPlatformBackend() { if (IS_CF_PAGES) { return HttpBackend; + } else if (IS_VERCEL) { + return await import('i18next-fs-backend').then((module) => module.default); } else { return await safeRequireNodeDependency('i18next-fs-backend').then( (module) => module.default, diff --git a/app/utils/platform-adapter.ts b/app/utils/platform-adapter.ts index acb0b7bf..e0a368bb 100644 --- a/app/utils/platform-adapter.ts +++ b/app/utils/platform-adapter.ts @@ -1,5 +1,7 @@ export const IS_CF_PAGES = typeof process === 'undefined'; +export const IS_VERCEL = 'VERCEL' in process.env; + // This hack is to prevent `node` modules/packages being bundled in the // Cloudflare Pages context, which causes an error. export async function safeRequireNodeDependency(module: string) { diff --git a/remix.config.js b/remix.config.js index ceca95ec..b807b5ae 100644 --- a/remix.config.js +++ b/remix.config.js @@ -40,6 +40,7 @@ const cloudflarePagesConfig = { */ const vercelConfig = { ignoredRouteFiles: ['**/.*'], + ...bareConfig, }; /** * @type {import('@remix-run/dev').AppConfig} @@ -85,5 +86,4 @@ function selectConfig() { throw new Error(`Cannot select config`); } -// export default selectConfig(); -module.exports = selectConfig(); +export default selectConfig();