You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在Vercel部署搭配Neon PostgreSQL的NextJS-Prisma应用时,Prisma无法定位查询引擎

在Vercel部署搭配Neon PostgreSQL的NextJS-Prisma应用时,Prisma无法定位查询引擎

嗨,这个问题我之前帮朋友排查过,本质就是Prisma Client的跨环境兼容性问题——你本地是Windows环境生成的客户端,但Vercel的运行时是RHEL(类Linux系统),两者的查询引擎二进制文件不匹配,自然就报找不到引擎的错了。给你几个亲测有效的解决办法:

  • 方案一:让Vercel部署时自动生成适配环境的Prisma Client
    打开项目根目录的package.json,在scripts节点里添加postinstall脚本:

    "scripts": {
      // 你的其他脚本...
      "postinstall": "prisma generate"
    }
    

    原理很简单:Vercel在安装完依赖后会自动执行postinstall命令,这样就能在它自己的Linux环境下生成对应版本的查询引擎,完美适配运行环境,从根源解决不兼容问题。

  • 方案二:确保不要提交Prisma的生成文件到Git
    检查项目根目录的.gitignore文件,确认里面包含这一行:

    node_modules/.prisma/
    

    要是之前不小心把这个目录提交到仓库了,先执行git rm -r --cached node_modules/.prisma移除Git缓存,然后重新提交代码。这样Vercel部署时就不会用你本地Windows生成的旧引擎文件了。

  • 方案三:手动指定多环境的二进制目标(适合需要兼顾本地和部署环境的场景)
    打开schema.prisma文件,修改generator client块的配置,同时包含Windows和Vercel所需的二进制目标:

    generator client {
      provider      = "prisma-client-js"
      binaryTargets = ["windows", "rhel-openssl-3.0.x"]
      forceBinaryTargets = ["rhel-openssl-3.0.x"]
    }
    

    这样你本地生成Prisma Client时,会同时打包Windows和Vercel环境需要的引擎文件,部署到Vercel时会强制使用对应环境的版本,也能解决问题。

最后提醒一句:做完上述修改后,记得把所有变更推送到Git仓库,重新触发Vercel的部署。另外也别忘了检查Vercel的环境变量里,DATABASE_URL是不是正确配置了Neon PostgreSQL的连接字符串,这个要是错了也会出各种奇怪的问题。

备注:内容来源于stack exchange,提问作者José Fong

火山引擎 最新活动