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
。
--> with "@types/node": "^15.4.0"
(具体记不太清了,从15(15.xx)开始)
--> 更新到最新版本后出现错误"@types/node": "^16.3.0"
使它与最新版本一起使用的标准方法是什么"@types/node": "^16.3.0",
?
解决方案
由于node@16
该NodeJS.Global
接口已被删除,有利于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;
推荐阅读
- c# - 如何优雅地关闭 ASP.Net(非核心)
- php - 在 Laravel 中将条带幂等性密钥传递给支付意图
- html - 删除文本开头的空格
- android - 如何将 aws 生成的 Android SDK 与 api 网关一起使用
- google-apps-script - 无法在任何文件上授权任何外部 Google Apps 脚本范围
- pdfbox - 尽管密码错误,pdfbox加密文件仍会打开
- javascript - Nest.js 无法解析依赖,找不到我的错误
- javascript - Local lighthouse has much different score than web.dev lighthouse
- python - 对列名满足字符串匹配条件的所有列的行值求和
- android - 如何在不直接引用数组名称的情况下从 json 数组中获取数据