内部服务器错误:TypeError:response.status 不是函数

问题描述 投票:0回答:1
import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

export const GET = async (req, response, next) => {
  try {
    console.log('Connected to Database via Prisma');
    const movies = await prisma.movies.findMany();
    console.log('Fetched movies:', movies);
    console.log(response);
    response.status(200).json(movies);
  } catch (error) {
    console.error('Internal Server Error:', error);
    if (!response.headersSent) {
      response.status(500).json({ error: 'Internal Server Error' });
    }
  } finally {
    await prisma.$disconnect().catch((disconnectError) => {
      console.error('Failed to disconnect:', disconnectError);
    });
  }
};

当我运行此程序时,我收到内部服务器错误:TypeError:response.status 不是函数

但是当我控制台记录电影时,我得到了正确的列表,我想知道为什么响应给我错误

我期待对 .jsx 组件的响应,如下所示

import React, { useEffect, useState } from 'react';

const MoviesComponent = () => {
  const [movies, setMovies] = useState([]);
  const [error, setError] = useState(null);

  useEffect(() => {
    const fetchMovies = async () => {
      try {
        console.log('Fetching movies...');
        const response = await fetch('/api/movies');
        if (!response.ok) {
            console.log(response)
          throw new Error(`HTTP error! status: ${response.status}`);
        }
        const data = await response.json();
        setMovies(data);
      } catch (error) {
        console.error("Failed to fetch movies:", error);
        setError("Failed to fetch movies. Please try again later.");
      }
    };

    fetchMovies();
  }, []);

  if (error) {
    return <p>{error}</p>;
  }

  return (
    <div>
      <ul>
        {movies.map(movie => (
          <li key={movie.id}>
            <strong>{movie.movie_name}</strong> ({movie.release_year})
            <p>Cast: {movie.cast.join(', ')}</p>
          </li>
        ))}
      </ul>
    </div>
  );
};

export default MoviesComponent;



我真的很感谢这方面的帮助,因为我在过去 12 小时内尝试修复此问题,但仅针对联系 mongodb 服务器以获取一些数据的 Route.js 文件进行修复

mongodb next.js prisma
1个回答
0
投票

在App router中,route handler的第二个参数是事件而不是响应。第三个参数

next
在 Next.js App Router 中不存在。它存在于其他一些框架中,例如 Express.js

要发送响应,您可以使用内置

Response
API 或从
NextResponse
;
 导入 
"next/server"

//  app/api/route.js

export const GET = async (req, response, next) => {
  // ...
  return Response.json(movies, { status: 200 });
}

或者

import { NextResponse } from "next/server"

// ...

return NextResponse.json(movies, { status: 200 })
© www.soinside.com 2019 - 2024. All rights reserved.