Fix bridge Docker builds: pin pnpm v9, regex Firebase stub, force-dynamic auth

- Pin pnpm to v9 in both Dockerfiles (pnpm@latest resolves to v10 which
  breaks lockfile v9.0 compatibility, causing Prisma 7 resolution)
- Replace individual webpack aliases with NormalModuleReplacementPlugin
  regex to catch ALL firebase/* and @firebase/* import paths
- Add force-dynamic to /auth page to skip build-time data collection
- Rename dynamic import to avoid name collision with route segment config
This commit is contained in:
2026-02-24 03:56:51 -08:00
parent 1c0ea9c960
commit 35f7d5fcf3
4 changed files with 15 additions and 32 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ RUN apk add --no-cache libc6-compat python3 make g++
WORKDIR /app
# Install pnpm
RUN corepack enable && corepack prepare pnpm@latest --activate
RUN corepack enable && corepack prepare pnpm@9 --activate
# Copy root workspace files
COPY package.json ./
+9 -27
View File
@@ -3,6 +3,7 @@
const withMDX = require("@next/mdx")();
const { PHASE_PRODUCTION_SERVER } = require("next/constants");
const path = require("path")
const webpack = require("webpack")
const svgrPluginConfig = require('./next-conf/svgr.next.config')
const watchPluginConfig = require('./next-conf/watch.next.config')
@@ -81,35 +82,16 @@ module.exports = (phase, { defaultConfig }) => {
// Stub ALL Firebase modules during server-side build to prevent
// "default Firebase app does not exist" errors at build time.
// Firebase is client-only; real modules load at runtime in browser.
// Uses NormalModuleReplacementPlugin with regex to catch ALL firebase
// import paths (firebase/*, @firebase/*, firebase-admin/*).
if (isServer) {
const firebaseStub = path.resolve(__dirname, 'next-conf/firebase-stub.js');
// Match all firebase/* and @firebase/* import paths
config.resolve.alias['firebase/app'] = firebaseStub;
config.resolve.alias['firebase/firestore'] = firebaseStub;
config.resolve.alias['firebase/auth'] = firebaseStub;
config.resolve.alias['firebase/analytics'] = firebaseStub;
config.resolve.alias['firebase/storage'] = firebaseStub;
config.resolve.alias['firebase/messaging'] = firebaseStub;
config.resolve.alias['firebase/functions'] = firebaseStub;
config.resolve.alias['firebase/database'] = firebaseStub;
config.resolve.alias['firebase/performance'] = firebaseStub;
config.resolve.alias['firebase/remote-config'] = firebaseStub;
config.resolve.alias['firebase'] = firebaseStub;
config.resolve.alias['@firebase/app'] = firebaseStub;
config.resolve.alias['@firebase/auth'] = firebaseStub;
config.resolve.alias['@firebase/firestore'] = firebaseStub;
config.resolve.alias['@firebase/analytics'] = firebaseStub;
config.resolve.alias['@firebase/storage'] = firebaseStub;
config.resolve.alias['@firebase/messaging'] = firebaseStub;
config.resolve.alias['@firebase/functions'] = firebaseStub;
config.resolve.alias['@firebase/database'] = firebaseStub;
config.resolve.alias['@firebase/app-compat'] = firebaseStub;
config.resolve.alias['@firebase/auth-compat'] = firebaseStub;
config.resolve.alias['@firebase/firestore-compat'] = firebaseStub;
config.resolve.alias['firebase-admin'] = firebaseStub;
config.resolve.alias['firebase-admin/app'] = firebaseStub;
config.resolve.alias['firebase-admin/auth'] = firebaseStub;
config.resolve.alias['firebase-admin/firestore'] = firebaseStub;
config.plugins.push(
new webpack.NormalModuleReplacementPlugin(
/^firebase\/|^firebase$|^@firebase\/|^firebase-admin/,
firebaseStub
)
);
}
let conf = svgrPluginConfig(config)
+3 -2
View File
@@ -1,8 +1,9 @@
import dynamic from 'next/dynamic'
import nextDynamic from 'next/dynamic'
export const dynamic = 'force-dynamic'
export const revalidate = 0
const AuthContent = dynamic(() => import('@/components/AuthContent'), { ssr: false })
const AuthContent = nextDynamic(() => import('@/components/AuthContent'), { ssr: false })
export default function AuthPage() {
return <AuthContent />
+2 -2
View File
@@ -5,7 +5,7 @@ RUN apk add --no-cache libc6-compat
WORKDIR /app
# Install pnpm
RUN corepack enable && corepack prepare pnpm@latest --activate
RUN corepack enable && corepack prepare pnpm@9 --activate
# Copy root workspace files
COPY package.json ./
@@ -33,7 +33,7 @@ WORKDIR /app
ENV NODE_ENV=production
# Install pnpm for runtime
RUN corepack enable && corepack prepare pnpm@latest --activate
RUN corepack enable && corepack prepare pnpm@9 --activate
# Add non-root user
RUN addgroup --system --gid 1001 nodejs