Nextjs项目Vercel预览环境中Prisma db seed在Supabase远程实例运行失败
问题:Vercel预览环境中Prisma Seed触发SIGSEGV段错误
背景信息
- 项目栈:Next.js + Supabase(远程PostgreSQL),部署在Vercel预览环境
- 已完成操作:
prisma migrate deploy执行成功,数据库架构与本地完全一致 - 报错内容:
An error occurred while running the seed command: Error: Command was killed with SIGSEGV (Segmentation fault): ts-node --compiler-options {\"module\":\"CommonJS\"} prisma/seed.ts
- 已尝试的无效方案:
- 按Prisma文档配置package.json的seed命令:
"prisma": { "seed": "ts-node --compiler-options {\"module\":\"CommonJS\"} prisma/seed.ts" } - 修改.env的DATABASE_URL为Supabase地址
- 分配更多内存执行脚本:
NODE_OPTIONS="--max-old-space-size=4096" yarn ts-node --compiler-options {\"module\":\"CommonJS\"} prisma/seed.ts
- 按Prisma文档配置package.json的seed命令:
- 版本信息:Prisma 4.10.1,Node.js 18.12.1
解决方法
1. 替换ts-node为tsx或编译后执行脚本
ts-node在Vercel服务器环境下存在兼容性隐患,可改用更轻量的tsx工具:
- 安装依赖:
yarn add tsx --dev - 修改package.json的seed配置:
"prisma": { "seed": "tsx prisma/seed.ts" }
或者提前编译Seed脚本为JS再执行:
- 在package.json新增脚本:
"scripts": { "seed:build": "tsc prisma/seed.ts --out-dir prisma/dist", "seed": "node prisma/dist/seed.js" }, "prisma": { "seed": "npm run seed" }
Vercel环境中先执行seed:build再运行seed命令。
2. 升级Prisma版本
Prisma 4.10.1在Node.js 18环境下存在已知兼容性问题,升级到稳定新版本(如4.16+)可修复段错误:
- 执行升级:
yarn upgrade prisma@latest - 重新生成客户端:
yarn prisma generate
3. 排查并简化Seed脚本
段错误可能源于脚本内存泄漏、无限循环或Prisma调用异常:
- 先简化脚本,仅插入少量测试数据,验证是否仍报错
- 拆分批量操作,避免一次性加载过多数据到内存(比如分批插入)
- 确保脚本结束时调用
prisma.$disconnect()关闭客户端连接
4. 调整Vercel环境配置
- 修改构建命令,串联迁移与seed操作:
prisma migrate deploy && prisma db seed - 在Vercel环境变量中设置更大内存:
NODE_OPTIONS="--max-old-space-size=8192"
内容的提问来源于stack exchange,提问作者rooo
相关产品推荐
相关产品推荐

