Fix Docker deployment issues and add CasaOS configuration
- Add missing Firebase Admin environment variables to docker-compose.yml - Update CasaOS configuration with gracious_eldan naming - Fix Firebase admin initialization for build-time compatibility - Add missing component imports in main page - Fix TypeScript compilation errors in API routes - Update port mapping to 3050 for CasaOS deployment
This commit is contained in:
1 parent
27d02596d1
commit
7293dbdc34
5 files changed
+40
-7
No files matched your search
+22
-4
@@ -1,19 +1,22 @@
|
|||||||
version: '3.8'
|
version: '3.8'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
prayer-app:
|
gracious_eldan:
|
||||||
image: ghcr.io/nmemmert/prayer-app:latest
|
image: ghcr.io/nmemmert/prayer-app:latest
|
||||||
container_name: prayer-app
|
container_name: prayer-app
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "3000:3000"
|
- "3050:3000"
|
||||||
environment:
|
environment:
|
||||||
- NODE_ENV=production
|
- NODE_ENV=production
|
||||||
- NEXT_PUBLIC_EMAILJS_SERVICE_ID=service_zwpcif9
|
- NEXT_PUBLIC_EMAILJS_SERVICE_ID=service_zwpcif9
|
||||||
- NEXT_PUBLIC_EMAILJS_TEMPLATE_ID=template_z50fk3e
|
- NEXT_PUBLIC_EMAILJS_TEMPLATE_ID=template_z50fk3e
|
||||||
- NEXT_PUBLIC_EMAILJS_PUBLIC_KEY=W6JhfYIWckVEP2nrm
|
- NEXT_PUBLIC_EMAILJS_PUBLIC_KEY=W6JhfYIWckVEP2nrm
|
||||||
|
- FIREBASE_PROJECT_ID=prayer-app-6701f
|
||||||
|
- FIREBASE_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC55AHf+yi+v5O9\nEV6kfylFqbhI/NJ9ptPV+TeNVBhpgviZxqXVB3TqwyF/opWZa9FsYFyLr2echI65\nUxbCy3oSUMVKMdp5NWVo7PN4JcqrKmemLCEsQ40adMXNVs7K4bEokiN7en4G12sX\n+f8Uj2m+HtogJHU9/xJeqCUV+HxB927CRKsO+G8fPvlsHamJoo9lGNzAiuS8KIKc\noqblNzhit0xUzQgZO8QG6pfoJZ3OjOAeSea9woyqIzL8ANpYmGFsne0n4YnLkJpE\nu0ywEA8PVTCic/GU/Y7cRdtL+qL6WK7sNIFwE+U2tMS18tnGVtpFa46sYH64HTqD\nWY7k0IpFAgMBAAECggEAOP1KBdz+NNyO8pvspAnIIW9S7C12asdGkocBHPb3NQHO\nLXbVSGYs1fxUvMifjJWdcthoBvsTjMym5PIwPDAdkJfqpEB8dkSEfpKGYgNUCv3J\nIQzObr+W9tFuAvHmHBTtNz72WdjH4lkQoB0osqj1BjB3Nvt2ZjdY7mQmWoH/tkkb\nUNk/XTvpTSN51CV2qpI8qsRsUctqGu3yJZpZSoBcgsTdr6G0VUrZxLlg2Jsn2J/G\na9KKsBGWmUnFXNGxHiyxlOST+FGmq6W6TPhSAikhEVr3P47U+MtgoIN/P+veniwJ\nuRwMLUTHaqeYkB0+dkQ/TNVTU2B6UOBKCSZbCMQU0QKBgQDnhhkLOFpWY5hcvV2d\nMnFQbb62WJMdvQ0g7K0Jo5DvLb2qucmVoVoezjj3jPVqOUp3tiJt/bEWNJ4LA7J0\nRJI7k9+JW9wbw8sY40zpiuz6ZJ67iyS9fi9aKIFR09MOZ/TyybCF0SwKq86ABwPM\nXWlOsjyVgNmznjQUNPhsu7l/ywKBgQDNiuevP9HYZq5sRSiX/Fw4Odkq9vsKV9Zc\nSm4CT3Cuytjn1GiQMalKGbe45XUz/lrvN0QVFE+ORjgqE9b2NeSdmHLZDqnbie62\nMo96GVLyfP8GT4yCH0LmHV3lNvsbJVcl0qFFjhMqaa65zk45JQHcSmWOLzLU3o27\nNY3g/Ju8LwKBgQDFuB9rFZUQcb2Mdaucs5dRuGdGEh6RJwIvO/AKa0U6/TUct80P\nm9v6suKzhg2PyZ1u3nxIsn6pGAZgIagk4up/NqmQBILUs0Ce4H6uc5YtwABO6WVW\n7oxB0pWd6+gyRVVKgjPeE+QouNCBRXxY6u0j59MVWhSQ8GpJV3NQaIDiQQKBgBYy\nCsTE6n8oz2sHqNOIv9iefpICK6e5Rn+e1fRP6cYmR3f5WvU/N5212z4PITHlJKKy\nYBq6n8CoWoZIsCzUMwTFoplH2RXI9ksceJvhwjBHSS7ARlcC0zGQOER5RHJw/NEr\nxpiBOBabZO/RlGbdVS8ZpY/ODvonsjxmExUZkiOnAoGASzbkYljSHufy85NEcBL5\n2iP2FR/CgPQjBT99LNZ4VduetPEn76+geoYBY55CTbMgXdbf2R7/MjZfxhJz7ojU\nufivomI8Mzcxz4PCMQxVnsa7jy28u2xAxsapOdg2ftOilzTuLfInXGzLzLPeQAYK\n6VT67TPTfqKVe3bYM2VJXiw=\n-----END PRIVATE KEY-----\n
|
||||||
|
- FIREBASE_CLIENT_EMAIL=firebase-adminsdk-fbsvc@prayer-app-6701f.iam.gserviceaccount.com
|
||||||
networks:
|
networks:
|
||||||
- prayer-network
|
- gracious_eldan_prayer-network
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "curl", "-f", "http://localhost:3000"]
|
test: ["CMD", "curl", "-f", "http://localhost:3000"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
@@ -22,5 +25,20 @@ services:
|
|||||||
start_period: 40s
|
start_period: 40s
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
prayer-network:
|
gracious_eldan_prayer-network:
|
||||||
|
name: gracious_eldan_prayer-network
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|
||||||
|
x-casaos:
|
||||||
|
author: self
|
||||||
|
category: self
|
||||||
|
hostname: ""
|
||||||
|
icon: https://icon.casaos.io/main/all/prayer-app.png
|
||||||
|
index: /
|
||||||
|
is_uncontrolled: false
|
||||||
|
port_map: "3050"
|
||||||
|
scheme: http
|
||||||
|
store_app_id: gracious_eldan
|
||||||
|
title:
|
||||||
|
custom: ""
|
||||||
|
en_us: prayer-app
|
||||||
+1
-1
@@ -1 +1 @@
|
|||||||
if(!self.define){let e,s={};const c=(c,n)=>(c=new URL(c+".js",n).href,s[c]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=c,e.onload=s,document.head.appendChild(e)}else e=c,importScripts(c),s()}).then(()=>{let e=s[c];if(!e)throw new Error(`Module ${c} didn’t register its module`);return e}));self.define=(n,a)=>{const i=e||("document"in self?document.currentScript.src:"")||location.href;if(s[i])return;let t={};const r=e=>c(e,i),o={module:{uri:i},exports:t,require:r};s[i]=Promise.all(n.map(e=>o[e]||r(e))).then(e=>(a(...e),t))}}define(["./workbox-4754cb34"],function(e){"use strict";importScripts(),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/_next/static/cZNsOOz6AsqlSRDoNZrT0/_buildManifest.js",revision:"d2b421a3ddcac0c722ca24372451f8ce"},{url:"/_next/static/cZNsOOz6AsqlSRDoNZrT0/_ssgManifest.js",revision:"b6652df95db52feb4daf4eca35380933"},{url:"/_next/static/chunks/139.97da462391398dcd.js",revision:"97da462391398dcd"},{url:"/_next/static/chunks/148-615d1fc583e40846.js",revision:"615d1fc583e40846"},{url:"/_next/static/chunks/164f4fb6-17ad80440a3b3920.js",revision:"17ad80440a3b3920"},{url:"/_next/static/chunks/172-1a38936297cc38bc.js",revision:"1a38936297cc38bc"},{url:"/_next/static/chunks/199.cd10280de272c91c.js",revision:"cd10280de272c91c"},{url:"/_next/static/chunks/2f0b94e8-7527bef887b06150.js",revision:"7527bef887b06150"},{url:"/_next/static/chunks/462-8a0461a50c388d15.js",revision:"8a0461a50c388d15"},{url:"/_next/static/chunks/4bd1b696-628cfb3caad2bc1d.js",revision:"628cfb3caad2bc1d"},{url:"/_next/static/chunks/512-8f5e89a9857e3f80.js",revision:"8f5e89a9857e3f80"},{url:"/_next/static/chunks/646.363f2485dd3ba6c3.js",revision:"363f2485dd3ba6c3"},{url:"/_next/static/chunks/7508b87c-410b41f2acbcecc1.js",revision:"410b41f2acbcecc1"},{url:"/_next/static/chunks/931.18379530dad468f9.js",revision:"18379530dad468f9"},{url:"/_next/static/chunks/995.243eda67e2e24a2c.js",revision:"243eda67e2e24a2c"},{url:"/_next/static/chunks/ad2866b8.7839d30dea3f5edd.js",revision:"7839d30dea3f5edd"},{url:"/_next/static/chunks/app/_global-error/page-88bbc163b0c2e76d.js",revision:"88bbc163b0c2e76d"},{url:"/_next/static/chunks/app/_not-found/page-cb3917e7db174c1b.js",revision:"cb3917e7db174c1b"},{url:"/_next/static/chunks/app/admin/page-04bb41370f723a6a.js",revision:"04bb41370f723a6a"},{url:"/_next/static/chunks/app/api/send-email/route-88bbc163b0c2e76d.js",revision:"88bbc163b0c2e76d"},{url:"/_next/static/chunks/app/api/send-scheduled-emails/route-88bbc163b0c2e76d.js",revision:"88bbc163b0c2e76d"},{url:"/_next/static/chunks/app/layout-b2dce4554ba9ca0b.js",revision:"b2dce4554ba9ca0b"},{url:"/_next/static/chunks/app/page-dcf2deebe849ac91.js",revision:"dcf2deebe849ac91"},{url:"/_next/static/chunks/app/profile/page-7e7f10a8be5af96b.js",revision:"7e7f10a8be5af96b"},{url:"/_next/static/chunks/bc98253f.d6fc8a0138855acd.js",revision:"d6fc8a0138855acd"},{url:"/_next/static/chunks/dd8162e8-7de6382133d6a555.js",revision:"7de6382133d6a555"},{url:"/_next/static/chunks/framework-3311683cffde0ebf.js",revision:"3311683cffde0ebf"},{url:"/_next/static/chunks/main-47dd9496debeeb98.js",revision:"47dd9496debeeb98"},{url:"/_next/static/chunks/main-app-c78a9c42a9419335.js",revision:"c78a9c42a9419335"},{url:"/_next/static/chunks/next/dist/client/components/builtin/app-error-88bbc163b0c2e76d.js",revision:"88bbc163b0c2e76d"},{url:"/_next/static/chunks/next/dist/client/components/builtin/forbidden-88bbc163b0c2e76d.js",revision:"88bbc163b0c2e76d"},{url:"/_next/static/chunks/next/dist/client/components/builtin/global-error-b63881b22d0c42fc.js",revision:"b63881b22d0c42fc"},{url:"/_next/static/chunks/next/dist/client/components/builtin/not-found-88bbc163b0c2e76d.js",revision:"88bbc163b0c2e76d"},{url:"/_next/static/chunks/next/dist/client/components/builtin/unauthorized-88bbc163b0c2e76d.js",revision:"88bbc163b0c2e76d"},{url:"/_next/static/chunks/polyfills-42372ed130431b0a.js",revision:"846118c33b2c0e922d7b3a7676f81f6f"},{url:"/_next/static/chunks/webpack-9ffa8922fe2c32be.js",revision:"9ffa8922fe2c32be"},{url:"/_next/static/css/6bef0c948e09345f.css",revision:"6bef0c948e09345f"},{url:"/_next/static/media/4cf2300e9c8272f7-s.p.woff2",revision:"18bae71b1e1b2bb25321090a3b563103"},{url:"/_next/static/media/747892c23ea88013-s.woff2",revision:"a0761690ccf4441ace5cec893b82d4ab"},{url:"/_next/static/media/8d697b304b401681-s.woff2",revision:"cc728f6c0adb04da0dfcb0fc436a8ae5"},{url:"/_next/static/media/93f479601ee12b01-s.p.woff2",revision:"da83d5f06d825c5ae65b7cca706cb312"},{url:"/_next/static/media/9610d9e46709d722-s.woff2",revision:"7b7c0ef93df188a852344fc272fc096b"},{url:"/_next/static/media/ba015fad6dcf6784-s.woff2",revision:"8ea4f719af3312a055caf09f34c89a77"},{url:"/file.svg",revision:"d09f95206c3fa0bb9bd9fefabfd0ea71"},{url:"/firebase-messaging-sw.js",revision:"04d66892653ef67e1151f1ec6c02420b"},{url:"/globe.svg",revision:"2aaafa6a49b6563925fe440891e32717"},{url:"/icon-192x192.png",revision:"bbbd7efc0e31088ae0a3aeedLine truncated
|
if(!self.define){let e,s={};const n=(n,c)=>(n=new URL(n+".js",c).href,s[n]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=s,document.head.appendChild(e)}else e=n,importScripts(n),s()}).then(()=>{let e=s[n];if(!e)throw new Error(`Module ${n} didn’t register its module`);return e}));self.define=(c,i)=>{const a=e||("document"in self?document.currentScript.src:"")||location.href;if(s[a])return;let t={};const r=e=>n(e,a),f={module:{uri:a},exports:t,require:r};s[a]=Promise.all(c.map(e=>f[e]||r(e))).then(e=>(i(...e),t))}}define(["./workbox-4754cb34"],function(e){"use strict";importScripts(),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/_next/static/ZJ1amCf6sWEDnl_cuwfHd/_buildManifest.js",revision:"44608b7d53e1eefcd54452c125d6300e"},{url:"/_next/static/ZJ1amCf6sWEDnl_cuwfHd/_ssgManifest.js",revision:"b6652df95db52feb4daf4eca35380933"},{url:"/_next/static/chunks/139.97da462391398dcd.js",revision:"97da462391398dcd"},{url:"/_next/static/chunks/148-615d1fc583e40846.js",revision:"615d1fc583e40846"},{url:"/_next/static/chunks/164f4fb6-17ad80440a3b3920.js",revision:"17ad80440a3b3920"},{url:"/_next/static/chunks/172-1a38936297cc38bc.js",revision:"1a38936297cc38bc"},{url:"/_next/static/chunks/199.cd10280de272c91c.js",revision:"cd10280de272c91c"},{url:"/_next/static/chunks/2f0b94e8-7527bef887b06150.js",revision:"7527bef887b06150"},{url:"/_next/static/chunks/462-3a0dd8f3c0c0a84b.js",revision:"3a0dd8f3c0c0a84b"},{url:"/_next/static/chunks/4bd1b696-628cfb3caad2bc1d.js",revision:"628cfb3caad2bc1d"},{url:"/_next/static/chunks/512-8f5e89a9857e3f80.js",revision:"8f5e89a9857e3f80"},{url:"/_next/static/chunks/646.363f2485dd3ba6c3.js",revision:"363f2485dd3ba6c3"},{url:"/_next/static/chunks/7508b87c-304c1e221a8292f0.js",revision:"304c1e221a8292f0"},{url:"/_next/static/chunks/931.18379530dad468f9.js",revision:"18379530dad468f9"},{url:"/_next/static/chunks/995.243eda67e2e24a2c.js",revision:"243eda67e2e24a2c"},{url:"/_next/static/chunks/ad2866b8.7839d30dea3f5edd.js",revision:"7839d30dea3f5edd"},{url:"/_next/static/chunks/app/_global-error/page-1ce74f8102e311f3.js",revision:"1ce74f8102e311f3"},{url:"/_next/static/chunks/app/_not-found/page-cb3917e7db174c1b.js",revision:"cb3917e7db174c1b"},{url:"/_next/static/chunks/app/admin/page-ec37f598b7041c0a.js",revision:"ec37f598b7041c0a"},{url:"/_next/static/chunks/app/api/debug-smtp/route-1ce74f8102e311f3.js",revision:"1ce74f8102e311f3"},{url:"/_next/static/chunks/app/api/send-email/route-1ce74f8102e311f3.js",revision:"1ce74f8102e311f3"},{url:"/_next/static/chunks/app/api/send-scheduled-emails/route-1ce74f8102e311f3.js",revision:"1ce74f8102e311f3"},{url:"/_next/static/chunks/app/layout-b2dce4554ba9ca0b.js",revision:"b2dce4554ba9ca0b"},{url:"/_next/static/chunks/app/page-e27085299217835d.js",revision:"e27085299217835d"},{url:"/_next/static/chunks/app/profile/page-88affc27d21b7c42.js",revision:"88affc27d21b7c42"},{url:"/_next/static/chunks/app/testimonies/page-79be2b9c0d351025.js",revision:"79be2b9c0d351025"},{url:"/_next/static/chunks/bc98253f.d6fc8a0138855acd.js",revision:"d6fc8a0138855acd"},{url:"/_next/static/chunks/dd8162e8-7de6382133d6a555.js",revision:"7de6382133d6a555"},{url:"/_next/static/chunks/framework-3311683cffde0ebf.js",revision:"3311683cffde0ebf"},{url:"/_next/static/chunks/main-47dd9496debeeb98.js",revision:"47dd9496debeeb98"},{url:"/_next/static/chunks/main-app-c78a9c42a9419335.js",revision:"c78a9c42a9419335"},{url:"/_next/static/chunks/next/dist/client/components/builtin/app-error-1ce74f8102e311f3.js",revision:"1ce74f8102e311f3"},{url:"/_next/static/chunks/next/dist/client/components/builtin/forbidden-1ce74f8102e311f3.js",revision:"1ce74f8102e311f3"},{url:"/_next/static/chunks/next/dist/client/components/builtin/global-error-b63881b22d0c42fc.js",revision:"b63881b22d0c42fc"},{url:"/_next/static/chunks/next/dist/client/components/builtin/not-found-1ce74f8102e311f3.js",revision:"1ce74f8102e311f3"},{url:"/_next/static/chunks/next/dist/client/components/builtin/unauthorized-1ce74f8102e311f3.js",revision:"1ce74f8102e311f3"},{url:"/_next/static/chunks/polyfills-42372ed130431b0a.js",revision:"846118c33b2c0e922d7b3a7676f81f6f"},{url:"/_next/static/chunks/webpack-9ffa8922fe2c32be.js",revision:"9ffa8922fe2c32be"},{url:"/_next/static/css/56455deeba59cecf.css",revision:"56455deeba59cecf"},{url:"/_next/static/media/4cf2300e9c8272f7-s.p.woff2",revision:"18bae71b1e1b2bb25321090a3b563103"},{url:"/_next/static/media/747892c23ea88013-s.woff2",revision:"a0761690ccf4441ace5cec893b82d4ab"},{url:"/_next/static/media/8d697b304b401681-s.woff2",revision:"cc728f6c0adb04da0dfcb0fc436a8ae5"},{url:"/_next/static/media/93f479601ee12b01-s.p.woff2",revision:"da83d5f06d825c5ae65b7cca706cb312"},{url:"/_next/static/media/9610d9e46709d722-s.woff2",revision:"7b7c0ef93df188a852344fc272fc096b"},{url:"/_next/static/media/ba015fad6dcf6784-s.woff2",revision:"8ea4f719af3312a055caf09f34c89a77"},{url:"/file.svg",revision:"d09f95206c3fa0bb9bd9fefabfd0ea71"},Line truncated
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
import { NextRequest, NextResponse } from 'next/server';
|
import { NextRequest, NextResponse } from 'next/server';
|
||||||
import { admin } from '@/lib/firebase-admin';
|
|
||||||
import nodemailer from 'nodemailer';
|
import nodemailer from 'nodemailer';
|
||||||
|
|
||||||
function generatePrayerEmailHTML(message: string, subject: string) {
|
function generatePrayerEmailHTML(message: string, subject: string) {
|
||||||
@@ -299,9 +298,11 @@ function generatePrayerEmailHTML(message: string, subject: string) {
|
|||||||
|
|
||||||
export async function GET() {
|
export async function GET() {
|
||||||
try {
|
try {
|
||||||
|
// Dynamically import Firebase admin to avoid build-time initialization issues
|
||||||
|
const { admin } = await import('@/lib/firebase-admin');
|
||||||
|
|
||||||
console.log('🔄 Checking for scheduled emails...');
|
console.log('🔄 Checking for scheduled emails...');
|
||||||
|
|
||||||
// Get SMTP config using Firebase Admin SDK
|
|
||||||
const configDoc = await admin.firestore().collection('config').doc('smtp').get();
|
const configDoc = await admin.firestore().collection('config').doc('smtp').get();
|
||||||
if (!configDoc.exists) {
|
if (!configDoc.exists) {
|
||||||
console.log('❌ SMTP configuration not found');
|
console.log('❌ SMTP configuration not found');
|
||||||
@@ -309,6 +310,10 @@ export async function GET() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const smtpConfig = configDoc.data();
|
const smtpConfig = configDoc.data();
|
||||||
|
if (!smtpConfig) {
|
||||||
|
console.log('❌ SMTP configuration data is empty');
|
||||||
|
return NextResponse.json({ message: 'SMTP configuration data is empty' }, { status: 500 });
|
||||||
|
}
|
||||||
|
|
||||||
// Create transporter
|
// Create transporter
|
||||||
const transporter = nodemailer.createTransport({
|
const transporter = nodemailer.createTransport({
|
||||||
|
|||||||
@@ -7,6 +7,9 @@ import Navbar from '@/components/Navbar';
|
|||||||
import LoadingSkeleton from '@/components/LoadingSkeleton';
|
import LoadingSkeleton from '@/components/LoadingSkeleton';
|
||||||
import PrayerChain from '@/components/PrayerChain';
|
import PrayerChain from '@/components/PrayerChain';
|
||||||
import SharePrayer from '@/components/SharePrayer';
|
import SharePrayer from '@/components/SharePrayer';
|
||||||
|
import PrayerTemplatesManager from '@/components/PrayerTemplatesManager';
|
||||||
|
import PrayerGoalsManager from '@/components/PrayerGoalsManager';
|
||||||
|
import EmailTemplatesManager from '@/components/EmailTemplatesManager';
|
||||||
import { db } from '@/lib/firebase';
|
import { db } from '@/lib/firebase';
|
||||||
import { doc, setDoc, collection, addDoc, getDocs, updateDoc, query, where, getDoc } from 'firebase/firestore';
|
import { doc, setDoc, collection, addDoc, getDocs, updateDoc, query, where, getDoc } from 'firebase/firestore';
|
||||||
import emailjs from '@emailjs/browser';
|
import emailjs from '@emailjs/browser';
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import * as admin from 'firebase-admin';
|
import * as admin from 'firebase-admin';
|
||||||
|
|
||||||
if (!admin.apps.length) {
|
if (!admin.apps.length) {
|
||||||
|
// Only initialize if we have the required environment variables
|
||||||
|
if (process.env.FIREBASE_PROJECT_ID && process.env.FIREBASE_PRIVATE_KEY && process.env.FIREBASE_CLIENT_EMAIL) {
|
||||||
admin.initializeApp({
|
admin.initializeApp({
|
||||||
credential: admin.credential.cert({
|
credential: admin.credential.cert({
|
||||||
projectId: process.env.FIREBASE_PROJECT_ID,
|
projectId: process.env.FIREBASE_PROJECT_ID,
|
||||||
@@ -8,6 +10,11 @@ if (!admin.apps.length) {
|
|||||||
clientEmail: process.env.FIREBASE_CLIENT_EMAIL,
|
clientEmail: process.env.FIREBASE_CLIENT_EMAIL,
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
// For build time or when env vars are not available, initialize with default credentials
|
||||||
|
// This will work for client-side operations but may not work for admin operations
|
||||||
|
admin.initializeApp();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export { admin };
|
export { admin };
|
||||||
Reference in new issue
Block a user