mirror of
https://github.com/luxfi/bridge.git
synced 2026-09-24 00:26:46 +00:00
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:
@@ -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 ./
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 />
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user