Конечная точка 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(...

Другие вопросы по тегам