Почему я вижу эту ошибку: ответ от обработчика маршрута не возвращается

import { connectDB } from "../../../lib/mongoose";
import { User, userValidation, loginValidation } from "../../models/User";
import { BadRequestError } from "../../../lib/ErrorHandler";
import asyncHandler from "../../../lib/asyncHandler";
import { NextResponse } from "next/server";
import { getDebugger } from "@/lib/debugger";
const debug = getDebugger("route");

export const POST = asyncHandler(async (req: Request) => {
  await connectDB(process.env.MONGODB_URI);
  const data = await req.json();
  const { email, firstName, lastName, password } = data;

  const { error } = userValidation.validate(data);
  if (error) throw new BadRequestError(error.details[0].message);
  const isEmailExist = await User.findOne({ email });
  if (isEmailExist) {
    throw new BadRequestError("email is already exist");
  }
  const user = new User({
    firstName,
    lastName,
    email,
    password,
  });

  await user.save();

  return NextResponse.json(
    {
      message: `Success Signing Up!`,
      success: true,
      user,
    },
    { status: 201 }
  );
});
import { getDebugger } from "./debugger";
import { NextResponse } from "next/server";

const debug = getDebugger("async-error");

const asyncHandler = (cb) => async (req) => {
  try {
    await cb(req);
  } catch (error) {
    const statusCode = error.statusCode || 500;
    const message = error.message || "Something went wrong";
    debug(`Error ${statusCode}: ${message}`);
    return NextResponse.json(
      {
        error: message,
      },
      { status: statusCode }
    );
  }
};

export default asyncHandler;

Почему, когда я пытаюсь зарегистрировать нового пользователя, я получаю эту ошибку: ⨯ Ошибка: ответ от обработчика маршрута «C:\Users\parse\Documents\task-rabbit-new\src\app\api\test\route.ts» не возвращается. Убедитесь, что вы возвращаете Response или NextResponse во всех ветвях вашего обработчика.

Кроме того, даже когда я получаю эту ошибку, я все равно вижу новых пользователей в своей базе данных. и так, что здесь происходит? заранее спасибо всем

🤔 А знаете ли вы, что...
Node.js поддерживает работу с файлами и директориями на сервере.


228
1

Ответ:

Решено

Кажется, проблема в том, что ваш asyncHandler ничего не возвращает в обычном случае:

const asyncHandler = (cb) => async (req) => {
  try {
    return await cb(req); // notice the insertion of the return keyword here
  } catch (error) {
    const statusCode = error.statusCode || 500;
    const message = error.message || "Something went wrong";
    debug(`Error ${statusCode}: ${message}`);
    return NextResponse.json(
      {
        error: message,
      },
      { status: statusCode }
    );
  }
};

Итак, что касается вашего мнения о создании пользователя, работа выполняется, но результаты не передаются обратно клиенту.