Я пытаюсь развернуть приложение личного портфолио, которое использует внутренние конечные точки API для запроса БД. Во время развертывания я получаю следующую ошибку: FetchError: запрос на http: // localhost: 3000 / api / projects / all не выполнен, причина: подключить ECONNREFUSED 127.0.0.1:3000
Приложение хорошо работает во время локального сеанса, но после некоторого исследования я понял, что использование fetch внутри getStaticProps неверно. Однако я не могу придумать исправление. Следует ли мне забыть о конечной точке и запрашивать БД из getStaticProps или мне следует обновить URL-адрес, чтобы он отражал предоставленный Vercel? Я весь день хожу по кругу и буду благодарен за любые советы, спасибо!
// index.js:
export async function getStaticProps() {
const resProjects = await fetch('http://localhost:3000/api/projects/all');
const projects: Project[] = await resProjects.json();
const resSkills = await fetch('http://localhost:3000/api/skills/all');
const skills: Skills[] = await resSkills.json();
return {
props: {
projects,
skills,
}
}
}
// API / проекты / все
export default async (req: NextApiRequest, res: NextApiResponse) => {
const { method } = req;
if (method === "GET") {
try {
const allProjects = await prisma.project.findMany();
res.status(200).json({ projects: allProjects });
} catch (e) {
res.status(500).json({ error: e });
}
} else {
res.setHeader('Allow', ['GET'])
res.status(405).end(`Method ${method} Not Allowed`)
}
}
fetch
, просто вы не должны извлекать оттуда внутренний маршрут API. Следующий ответ должен дать больше информации об ошибке nextjs при создании рабочей среды для статического веб-сайта. Просто запросите базу данных прямо изgetStaticProps
. - person juliomalves   schedule 13.04.2021