我遇到了这个错误
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",
?
最佳答案
从 node@16
开始,NodeJS.Global
接口(interface) has been removed赞成globalThis
.
您可以在模块文件中声明新的全局变量:
declare global {
var NEW_GLOBAL: string;
}
并且在非模块文件中(没有顶级导入/导出)作为:
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;
关于javascript - 最近更新的 `@types/node` 版本正在创建错误。以前的版本工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68322578/