首页 > 解决方案 > `@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
--> with "@types/node": "^15.4.0"(具体记不太清了,从15(15.xx)开始)
--> 更新到最新版本后出现错误"@types/node": "^16.3.0"

使它与最新版本一起使用的标准方法是什么"@types/node": "^16.3.0",

标签: javascripttypescriptprisma

解决方案


由于node@16NodeJS.Global接口已被删除,有利于globalThis.

您可以在模块文件中声明新的全局变量:

declare global {
  var NEW_GLOBAL: string;
}

在非模块文件(无顶级导入/导出)中:

declare var NEW_GLOBAL: string;

重要提示:变量必须声明为var. letconst变量未显示在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;

推荐阅读