javascript - Den nylig oppdaterte versjonen av `@types/node` skaper en feil. Den forrige versjonen fungerte fint
Jeg får denne feilen
error TS2694: Namespace 'NodeJS' has no exported member 'Global'.
4 interface CustomNodeJsGlobal extends NodeJS.Global
Mens du kjører dette
import { PrismaClient } from "@prisma/client";
// add prisma to the NodeJS global type
interface CustomNodeJsGlobal extends NodeJS.Global {
prisma: PrismaClient;
}
// Prevent multiple instances of Prisma Client in development
declare const global: CustomNodeJsGlobal;
const prisma = global.prisma || new PrismaClient();
if (process.env.NODE_ENV === "development") global.prisma = prisma;
export default prisma;
DET ER PROBLEMET MED @types/node-VERSJONEN.
--> Med "@types/node": "^15.4.0" (jeg husker ikke nøyaktig, men det startet fra 15 (15.x.x))
--> Feilen vises etter oppdatering til den nyeste versjonen "@types/node": "^16.3.0"
Hva er den standardmåten å få det til å fungere med den nyeste versjonen "@types/node": "^16.3.0", ?
Svar #1
Fra og med node@16 har NodeJS.Global-grensesnittet blitt fjernet til fordel for globalThis.
Du kan erklære en ny global variabel i en modulfil som:
declare global {
var NEW_GLOBAL: string;
}
Og i en ikke-modulfil (ingen top-nivå import/eksport) som:
declare var NEW_GLOBAL: string;
Viktig merknad: variabel må deklareres som var. let eller const variabler vises ikke på globalThis.
Så, koden din kan omskrives som:
import { PrismaClient } from "@prisma/client";
declare global {
var prisma: PrismaClient;
}
const prisma = global.prisma || new PrismaClient();
if (process.env.NODE_ENV === "development") global.prisma = prisma;
export default prisma;
