Почему я получаю 500 ошибок внутреннего сервера.Javascript

Форум по Javascript
Ответить
Anonymous
 Почему я получаю 500 ошибок внутреннего сервера.

Сообщение Anonymous »

Использование следующего JS 15 с Firebase < /p>
Мои динамические маршруты страницы не могут получить данные от Firebase, не предоставляя 500 ошибок сервера в производстве. Я не вижу этого в среде разработки и эмулятора.// app/meettheteam/[id]/page.tsx (Server Component)

import type { Coach } from '@/types';
import { getCoachById } from '@/lib/coaches-data';
import CoachComp from './CoachComp';
import { Suspense } from 'react';
import { notFound } from 'next/navigation';

async function CoachPage({ params }: { params: Promise }) {
const id = (await params).id;

try {
const coach: Coach | null = await getCoachById(id);

if (!coach) {
notFound();
return;
}

return (





);
} catch (error) {
console.error('Error fetching coach:', error);
return Error loading coach. Please try again later.;
}
}

export default CoachPage;

< /code>
'use server';

// lib/coaches-data.ts

import { DocumentData } from 'firebase/firestore';

import { db } from '@/config/firebaseServer';

const getCoaches = async () => {
try {
const snapshot = await db.collection('coaches').get();

if (snapshot.empty) {
console.log('No matching documents.');
return;
}

const coachesDocs: DocumentData[] = snapshot.docs;

const coaches = coachesDocs.map((doc) => ({
id: doc.id,
...doc.data(),
}));

return coaches;
} catch (error) {
console.error('Error fetching coachs:', error);
throw error;
}
};

const getCoachById = async (id: string) => {
try {
const coachDoc: DocumentData = await db.collection('coaches').doc(id).get();

if (coachDoc.exists) {
const coach = coachDoc.data();

coach.id = coachDoc.id;

return coach;
} else {
console.log('Coach not found with ID:', id);
return null;
}
} catch (error) {
console.error('Error in getCoachById:', error);
throw error;
}
};

export { getCoaches, getCoachById };

< /code>

// config/firebaseServer.tsx
import { initializeApp, getApps } from 'firebase-admin/app';
import { getAuth } from 'firebase-admin/auth';
import { getFirestore } from 'firebase-admin/firestore';
import { getStorage } from 'firebase-admin/storage';
import { credential } from 'firebase-admin';

function initializeFirebaseAdmin() {
const projectId = process.env.FIREBASE_PROJECT_ID;
const storageBucket = process.env.FIREBASE_STORAGE_BUCKET;

if (!projectId || !storageBucket) {
// Check for these
console.error(
'Missing required Firebase environment variables (projectId or storageBucket).',
);
throw new Error(
'Missing required Firebase environment variables (projectId or storageBucket).',
);
}

try {
const serviceAccount = require('../firebase.json'); // Directly require the JSON

if (getApps().length === 0) {
initializeApp({
credential: credential.cert(serviceAccount),
projectId,
storageBucket,
});

console.log('Firebase Admin initialized successfully.');
} else {
console.log('Using existing Firebase Admin app.');
}
} catch (error) {
console.error('Error initializing Firebase Admin:', error);
throw error;
}
}

initializeFirebaseAdmin();

const admin = getAuth();
const db = getFirestore();
const storage = getStorage();

export { admin, db, storage };
< /code>
I was expecting the code to get the data
Using a server function in a server component
Pass data as a prop to client comp on page.

Подробнее здесь: https://stackoverflow.com/questions/794 ... firebase-p
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»