Использование следующего 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
Почему я получаю 500 ошибок внутреннего сервера. ⇐ Javascript
Форум по Javascript
-
Anonymous
1740247154
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.
Подробнее здесь: [url]https://stackoverflow.com/questions/79460014/why-am-i-getting-500-internal-server-error-next-js-dynamic-page-route-firebase-p[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия