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

Next.js13+Prisma+MongoDB数据渲染失败:TypeScript类型错误求助

解决TypeScript错误:Property 'projectsData' does not exist on type 'void | ...'

问题根源

getProjects函数的finally块中使用了return console.log("datafetched"),而console.log的返回值是void。这导致函数的返回类型变成了void | { projectsData: Projects[] }——当代码执行到finally时,会覆盖try或catch的返回值,最终可能返回void,因此TypeScript会报错无法解构projectsData属性。

修复方案

修改getProjects函数,移除finally块中的return关键字,只保留日志打印操作:

import prismaClientConnect from './prismaClientConnect'

export async function getProjects() {
    try {
        const projectsData = await prismaClientConnect.projects.findMany()
        return { projectsData }
    } catch (error) {
        console.error(error) // 使用console.error更适合输出错误日志
        // 可选:抛出错误让上层处理,或返回默认空数组
        throw error 
        // 若不想抛出错误,可返回默认值:return { projectsData: [] }
    } finally {
        console.log("datafetched") // 仅执行日志打印,不返回值
    }
}

额外优化建议

  • 类型明确化:可以为函数指定返回类型,增强类型安全:
import { Projects } from '@prisma/client'

export async function getProjects(): Promise<{ projectsData: Projects[] }> {
    // 函数内容同上
}
  • 错误处理逻辑:如果希望页面能捕获并处理错误,推荐在catch中抛出错误,上层组件可以通过try/catch包裹调用逻辑,避免因projectsData为undefined导致渲染崩溃。

内容的提问来源于stack exchange,提问作者Manshul Duggal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:01:06