For*_*orm 5 global typescript prisma
我正在使用Prisma开发一个打字稿项目,我在本指南上看到了使用打字稿的代码。然而,我的 linter 给出了以下代码的错误。
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;
Run Code Online (Sandbox Code Playgroud)
第 8,9,11 行(对于 )的错误消息global.prisma如下
元素隐式具有“any”类型,因为类型“typeof globalThis”没有索引签名。TS(7017)
如何扩展 globalThis 或 global with 的类型,Prismaclient使其按预期工作?
Tas*_*mam 18
以下是Prisma 文档中使用 Next.js 实例化 PrismaClient 的最佳实践中建议的解决方案。
import { PrismaClient } from '@prisma/client'
declare global {
var prisma: PrismaClient | undefined
}
export const prisma =
global.prisma ||
new PrismaClient()
if (process.env.NODE_ENV !== 'production') global.prisma = prisma
Run Code Online (Sandbox Code Playgroud)
您可以直接显式转换global为any. 滥用强制转换可能会削弱使用打字稿的价值,但在这种特定情况下,我没有看到任何危害或风险。
if (process.env.NODE_ENV === 'production') {
prisma = new PrismaClient();
} else {
if (!(global as any).prisma) {
(global as any).prisma = new PrismaClient();
}
prisma = (global as any).prisma;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7435 次 |
| 最近记录: |