我正在按照这个指南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;TypeScript在global.prisma上抛出一个ts7017
Element implicitly has an 'any' type because type 'typeof globalThis' has no index signature.有没有人能帮我理解这个问题,以及如何修复?我暂时在tsconfig中将'strict‘设置为false,这暂时抑制了这个问题,尽管我确信关闭它会违背TS的目的。
发布于 2021-11-05 09:54:52
我可以用严格模式将相同的错误重现为true和@types/node package version 16
这应该是可行的:
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;发布于 2021-11-05 09:52:22
根据docs,您需要先声明变量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;您还可以有一个包含声明的单独文件globals.d.ts。
https://stackoverflow.com/questions/69850598
复制相似问题