Ale*_*ien 6 postgresql node.js typescript next.js prisma
我按照本指南https://vercel.com/guides/nextjs-prisma-postgres创建一个完整的堆栈应用程序。Typescript 在这段代码中抛出错误:
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)
TypeScript 正在抛出ts7017
一个global.prisma
:
Element implicitly has an 'any' type because type 'typeof globalThis' has no index signature.
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我理解这个问题以及如何解决吗?同时,我在 tsconfig 中将“strict”设置为 false,从而暂时抑制了该问题,尽管我确信关闭它会破坏 TS 的目的。
Joë*_*oël 19
我可以使用严格模式为 true 并@types/node
打包版本 16来重现相同的错误
更新:请参阅此处文档推荐的其他答案/sf/answers/4889595161/
这应该有效:
declare global {
var prisma: PrismaClient; // This must be a `var` and not a `let / const`
}
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)
小智 5
根据文档,global
您需要首先声明变量:
import { PrismaClient } from '@prisma/client'
declare global {
var prisma: PrismaClient | undefined
}
export const prisma =
global.prisma ||
new PrismaClient({
log: ['query'],
});
if (process.env.NODE_ENV !== 'production') global.prisma = prisma;
Run Code Online (Sandbox Code Playgroud)
您还可以有一个单独的文件globals.d.ts
,其中包含声明。
归档时间: |
|
查看次数: |
6046 次 |
最近记录: |