NestJS/Prisma中出现"The 'code'参数必须为数字类型"错误
NestJS + Prisma 解决 "code参数必须是数字" 错误的思路
从错误栈信息分析,问题根源是Prisma客户端内部调用process.exit()时传入了字符串'SIGTERM',但Node.js要求process.exit()的参数必须为数字。以下是具体解决步骤:
升级Prisma版本:该问题属于Prisma已知bug,已在后续版本修复。执行命令完成升级:
npm install @prisma/client@latest npx prisma generate升级后务必重新生成客户端,确保代码同步。
检查Node.js版本兼容性:确认你的Node.js版本符合Prisma官方要求。部分旧版Node.js(如14.x及以下)的进程信号处理逻辑与新版Prisma存在冲突,建议切换到Prisma推荐的LTS版本(如18.x或20.x)。
排查自定义信号处理逻辑:检查NestJS应用中是否有手动监听
SIGTERM等进程信号的代码,这类自定义逻辑可能和Prisma内部的退出处理冲突。暂时移除相关代码,验证错误是否消失。统一部署与开发环境的Node版本:若仅部署后出现错误,确认服务器(或Docker镜像)的Node.js版本与本地开发环境一致,避免环境差异导致的兼容问题。
临时错误屏蔽(不推荐长期使用):若以上方案暂时无法落地,可在应用入口添加全局异常捕获,过滤该特定错误:
process.on('uncaughtException', (err) => { if (err.message.includes('The "code" argument must be of type number')) { return; } console.error('未捕获异常:', err); process.exit(1); });
内容的提问来源于stack exchange,提问作者daniel8x
相关产品推荐
相关产品推荐

