You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 01:39:40