【发布时间】:2021-12-19 08:27:38
【问题描述】:
我正在按照本指南 https://vercel.com/guides/nextjs-prisma-postgres 创建一个完整的堆栈应用程序。 Typescript 在这段代码的 sn-p 中抛出错误:
import { PrismaClient } from '@prisma/client';
let prisma: PrismaClient;
if (process.env.NODE_ENV === 'production') {
prisma = new PrismaClient();
} else {
if (!global.prisma) {
global.prisma = new PrismaClient();
}
prisma = global.prisma;
}
export default prisma;
TypeScript 在global.prisma 上抛出一个ts7017:
Element implicitly has an 'any' type because type 'typeof globalThis' has no index signature.
有人可以帮助我理解这一点以及如何解决吗?同时,我在 tsconfig 中将 'strict' 设置为 false 并且同时抑制了该问题,尽管我确信将其关闭会违背 TS 的目的。
【问题讨论】:
-
你知道
global.prisma是如何声明的吗?如果您无权访问它的声明,您是否尝试过使用global.prisma as PrismaClient强制转换它? -
我不会使用全局的.. 甚至不清楚为什么首先要这样做.. 奇怪!!!他们甚至稍后导入。
import prisma from '../lib/prisma'; -
来自 Prisma 团队的 Nikolas 在这里!我们建议以这种方式实例化
PrismaClient,否则由于 Next.js 的热重载,DB 连接限制会在开发中耗尽。这是我们的文档页面:prisma.io/docs/support/help-articles/…我正在与我们的一些 TypeScript 工程师联系,看看如何解决这个问题。
标签: node.js typescript postgresql next.js prisma