通过GitHub Actions部署Next.js+Prisma到Vercel遇引擎错误
问题解决方案
Vercel运行环境说明
Vercel的服务器运行环境基于RHEL 7.x(Red Hat Enterprise Linux 7),内核版本为Linux 3.10.x,配套OpenSSL 1.0.2版本,对应Prisma的平台标识就是你遇到的rhel-openssl-1.0.x。Node.js版本默认是18.x,可在Vercel项目控制台的「Settings」->「General」中调整指定版本。
GitHub Actions适配调整方案
你当前使用ubuntu-latest Runner构建时,Prisma默认生成适配Debian/Ubuntu的引擎(对应debian-openssl-1.1.x),但Vercel需要的是RHEL兼容的引擎,调整步骤如下:
1. 确认schema.prisma配置
确保generator client块的binaryTargets同时包含本地开发/构建用平台和Vercel所需平台,避免本地构建报错:
generator client { provider = "prisma-client-js" binaryTargets = ["debian-openssl-1.1.x", "rhel-openssl-1.0.x"] }
2. 在GitHub Actions中指定Prisma生成目标平台
在构建流程的prisma generate步骤,强制指定生成rhel-openssl-1.0.x平台的引擎,覆盖Runner默认的平台。示例GitHub Actions配置片段:
jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 18 cache: 'npm' - name: Install dependencies run: npm ci - name: Generate Prisma Client for Vercel run: npx prisma generate --binary-target rhel-openssl-1.0.x env: DATABASE_URL: ${{ secrets.DATABASE_URL }} # 若生成时需连接数据库(如数据预取) - name: Build Next.js app run: npm run build - name: Deploy to Vercel run: npx vercel deploy --prod --token ${{ secrets.VERCEL_TOKEN }}
关键说明
- 即便用
ubuntu-latest构建,只要在prisma generate时指定目标平台,就能生成适配Vercel运行环境的查询引擎,无需更换Runner环境。 - 若你的Next.js站点是纯静态SSG,但构建阶段用到Prisma(比如静态页面数据预取),该调整同样有效——构建生成的引擎会随代码部署到Vercel,供后续ISR/SSG增量更新使用。
内容的提问来源于stack exchange,提问作者Adam Jenkins
相关产品推荐
相关产品推荐

