next.js TypeError:无法使用prisma读取未定义的属性

sshcrbum  于 2023-10-18  发布在  其他
关注(0)|答案(2)|浏览(144)

我试图在我的Nextjs 13应用程序中设置prisma,但当我尝试插入数据时,我得到一个错误:error image
下面是模型代码:

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

model Task {
  id                  Int               @id @default(autoincrement())
  job_id              Int
  ....Other field.... 
}

推和生成工作得很好。我使用以下代码导出prisma客户端:

import { PrismaClient } from "@prisma/client";
let prisma;

if (typeof window === "undefined") {
    if (process.env.NODE_ENV === "production") {
        prisma = new PrismaClient()
    } else {
        if (!global.prisma) {
            global.prisma = new PrismaClient()
        }

        prisma = global.prisma
    }
}

export default prisma

最后,下面是使用客户端的代码:

import prisma from "@/lib/prisma"

export async function InsertData(data) {
    await prisma.task.create({
        data: data
    })

    const allTask = await prisma.task.findMany()

    return allTask
}

我试着把模型放在小写,但同样的错误。
谢谢
将数据插入数据库

raogr8fs

raogr8fs1#

为什么要在typeof window =“undefined”条件下添加代码?
试着像这样定义棱镜:

import { PrismaClient } from '@prisma/client';

const globalForPrisma = globalThis as unknown as {
  prisma: PrismaClient | undefined;
};

export const prisma = globalForPrisma.prisma ?? new PrismaClient();

if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;
vbkedwbf

vbkedwbf2#

我终于找到了错误的根源。我使用Nextjs 13(FormData)的实验功能。我必须在函数的开头添加“use server”,它调用我的操作,如文档中所示
很遗憾,错误没有更明确。

相关问题