You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js中Prisma在getServerSideProps查询无返回无报错如何解决?

排查步骤

1. 首先确认路由与Next.js版本适配

  • 检查comments.tsx是否放在pages目录下:只有pages路由下的页面组件才会自动执行getServerSideProps,放在components等非pages目录的组件不会触发该方法
  • 确认你使用的是Pages Router:如果你用的是Next.js 13+的App Router,getServerSideProps已废弃不支持,需要改用异步服务端组件写法实现服务端数据查询
  • 检查页面路由是否匹配:如果你的文件是嵌套在pages子目录下,要确认访问路径和文件层级对应,比如pages/casino/comments.tsx对应的访问路径是/casino/comments

2. 确认日志查看位置

getServerSideProps是服务端运行的方法,内部的console.log只会输出到你启动next dev的终端窗口,不会出现在浏览器控制台,先检查终端是否有对应的日志输出。

3. 修复代码中的明显错误

你定义的Props类型存在不匹配问题:

// 错误写法:findMany返回的是数组,不是单个对象
type Props = {
  comments?: CasinoComment;
};
// 修正为
type Props = {
  comments?: CasinoComment[];
};

4. 排查Prisma相关问题

  • 重新生成Prisma客户端:执行npx prisma generate后重启开发服务,避免schema变更后客户端未更新导致的查询异常
  • 单独测试Prisma查询:新建pages/api/test-prisma.ts写入以下代码,访问/api/test-prisma看返回结果是否正常:
import prisma from "../../lib/prisma";
export default async function handler(req, res) {
  const count = await prisma.casinoComment.count();
  const comments = await prisma.casinoComment.findMany();
  console.log("查询结果", count, comments);
  res.status(200).json({ count, comments });
}
  • 检查是否存在全局Prisma查询中间件:如果你配置了全局过滤逻辑(比如自动过滤approved=false的记录),会导致无数据返回,可临时给findMany加{ where: {} }参数强制覆盖全局过滤规则测试。

5. 排查缓存问题

  • 打开浏览器隐身窗口访问页面,或在地址后加随机查询参数(比如/comments?test=123),避免静态缓存直接返回旧页面导致服务端逻辑不执行
  • 检查next.config.js是否配置了页面级静态缓存规则,强制页面走静态渲染导致getServerSideProps不触发

内容的提问来源于stack exchange,提问作者Cult of Tranquility

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:15:02