javascript - เวอร์ชันล่าสุดที่อัปเดตของ `@types/node` กำลังสร้างข้อผิดพลาด เวอร์ชันก่อนหน้านี้ทำงานได้ดี
ฉันได้รับข้อผิดพลาดนี้
error TS2694: Namespace 'NodeJS' has no exported member 'Global'.
4 interface CustomNodeJsGlobal extends NodeJS.Global
ในขณะกำลังรันนี้
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;
นี่คือปัญหากับเวอร์ชันของ @types/node.
--> กับ "@types/node": "^15.4.0" (ฉันไม่แน่ใจเป๊ะ ๆ แต่เริ่มจากเวอร์ชัน 15 (15.x.x))
--> ข้อผิดพลาดปรากฏหลังจากอัปเดตเป็นเวอร์ชันล่าสุด "@types/node": "^16.3.0"
วิธีมาตรฐานในการทำให้มันใช้งานได้กับเวอร์ชันล่าสุด "@types/node": "^16.3.0", คืออะไร?
คำตอบ #1
ณ node@16 อินเทอร์เฟซ NodeJS.Global ได้ถูกลบออกและเปลี่ยนมาใช้ globalThis แทน
คุณสามารถประกาศตัวแปรทั่วโลกใหม่ในไฟล์โมดูลได้ดังนี้:
declare global {
var NEW_GLOBAL: string;
}
และในไฟล์ที่ไม่ใช่โมดูล (ไม่มีการ import/export ระดับบนสุด) ดังนี้:
declare var NEW_GLOBAL: string;
หมายเหตุสำคัญ: ตัวแปรต้องถูกประกาศเป็น var ตัวแปร let หรือ const จะไม่ปรากฏบน globalThis.
ดังนั้น โค้ดของคุณอาจถูกเขียนใหม่เป็น:
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;
