Конечная точка API папки приложения NextJS возвращает ошибку 500 без видимой ошибки
Итак, я пытаюсь создать конечную точку прокси, чтобы скрыть реальный сервер. Мой интерфейс — проект NextJS, а сервер — приложение Strapi. И я пытаюсь настроить регистрацию пользователей. у меня есть/app/api/auth/register/route.js
который возьмет входящий запрос из формы, а затем выполнит запрос с теми же данными, немного изменит его и выполнит фактический запрос на регистрацию для конечной точки аутентификации Strapi.
Кажется, все работает нормально: конечная точка NextJS получает запрос, данные есть, данные отправляются в Strapi, ответ возвращается от Strapi, а затем все просто молча завершается... Браузер получает 500 ответов об ошибках от NextJs. , но никаких ошибок нигде не записывается.
В основном мой вопрос: так ли вы должны обрабатывать входящие данные в папке /app (req.json().then((data) =>
)? Как я могу увидеть фактическую ошибку? И как я могу заставить это работать?
// /app/api/auth/register/route.js
import { NextResponse } from 'next/server';
const POST = async function (req) {
return req.json().then((data) => {
fetch(`${process.env.STRAPI_URL}/api/auth/local/register`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
email: data.email,
password: data.password,
// username: data.email, // commented out to trigger validation error
}),
})
.then((response) => {
console.log('The data', data);
response.json().then((respData) => {
console.log(respData);
if (response.ok) {
console.log('The success');
return NextResponse.json({ message: 'Success' });
} else {
console.log('The error');
return NextResponse.json({ error: 'something went wrong' }, { status: response.status });
}
});
})
.catch((error) => {
console.log('Something went terribly wrong');
return NextResponse.json({ error: 'something went wrong' }, { status: 500 });
});
});
};
export { POST };
// console logs:
strapi_commerce-nextjs-1 | The data { email: 'john@doe.com', password: 'doe' }
strapi_commerce-nextjs-1 | {
strapi_commerce-nextjs-1 | data: null,
strapi_commerce-nextjs-1 | error: {
strapi_commerce-nextjs-1 | status: 400,
strapi_commerce-nextjs-1 | name: 'ValidationError',
strapi_commerce-nextjs-1 | message: 'username is a required field',
strapi_commerce-nextjs-1 | details: { errors: [Array] }
strapi_commerce-nextjs-1 | }
strapi_commerce-nextjs-1 | }
strapi_commerce-nextjs-1 | The error
Моя версия NextJs — 13.4.1.
1 ответ
Благодарим за ответ https://www.reddit.com/user/Bohjio/ .И ответ заключался в том, чтобы убедиться, что все обещания возвращаются из представления. такreturn fetch(...
иreturn response.json().then(...