我正在按照本指南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;
打字稿被扔ts7017在global.prisma:
Element implicitly has an 'any' type because type 'typeof globalThis' has no index signature.
有人可以幫助我理解這一點以及如何解決嗎?同時,我在 tsconfig 中將“strict”設定為 false,同時抑制了這個問題,盡管我確信關閉它會破壞 TS 的目的。
uj5u.com熱心網友回復:
根據檔案,您需要先宣告變數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其中包含宣告。
uj5u.com熱心網友回復:
我可以使用嚴格模式將相同的錯誤重現為 true 并@types/node打包版本 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;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/349164.html
標籤:节点.js 打字稿 PostgreSQL 下一个.js 棱镜
