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

部署Vercel时Prisma Client找不到rhel-openssl-3.0.x查询引擎

解决Prisma 6.6.0 + Next.js 15.3.1部署到Vercel时的Query Engine找不到问题

问题核心原因

Vercel运行环境基于RHEL系统,本地生成的Prisma客户端默认仅包含当前系统的引擎文件;同时自定义的Prisma Client输出路径(../generated/prisma)未被Next.js打包流程正确识别,导致运行时找不到对应环境的引擎文件。


解决方案

1. 指定Prisma生成适配Vercel环境的引擎

在schema.prisma的generator配置中添加binaryTargets,同时兼容本地环境和Vercel的RHEL环境:

generator client {
  provider      = "prisma-client-js"
  output        = "../generated/prisma" // 若后续改用默认路径则删除此行
  binaryTargets = ["native", "rhel-openssl-3.0.x"]
}
  • native:保证本地开发环境正常运行
  • rhel-openssl-3.0.x:适配Vercel的运行系统

2. 确保引擎文件被Next.js打包包含

有两种方案可选,优先推荐方案一(更简洁):

方案一:使用Prisma默认输出路径

修改schema.prisma,删除自定义的output配置,使用默认的.prisma/client路径:

generator client {
  provider = "prisma-client-js"
}

然后更新Prisma Client的导入路径:

import { PrismaClient } from "@prisma/client";

const globalForPrisma = global as unknown as {
  prisma: PrismaClient;
};

const prisma = globalForPrisma.prisma || new PrismaClient();

if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma;

export default prisma;

Next.js默认会处理.prisma/client目录下的文件,无需额外配置。

方案二:保留自定义输出路径,配置Webpack复制引擎文件

若需保留../generated/prisma输出路径,需安装copy-webpack-plugin并修改Next.js配置:

  1. 安装依赖:
npm install copy-webpack-plugin --save-dev
  1. 在next.config.js中添加Webpack配置:
const CopyPlugin = require('copy-webpack-plugin');

/** @type {import('next').NextConfig} */
const nextConfig = {
  webpack: (config) => {
    config.plugins.push(
      new CopyPlugin({
        patterns: [
          // 复制所有平台的引擎文件到打包后的对应目录
          {
            from: './generated/prisma/libquery_engine-*.so.node',
            to: 'generated/prisma/[name][ext]',
          },
          {
            from: './generated/prisma/libquery_engine-*.dll.node',
            to: 'generated/prisma/[name][ext]',
          },
          {
            from: './generated/prisma/libquery_engine-*.dylib',
            to: 'generated/prisma/[name][ext]',
          },
        ],
      })
    );
    return config;
  },
};

module.exports = nextConfig;

3. 验证并重新部署

  • 确认package.json的build脚本为prisma generate && next build(当前配置已正确)
  • 登录Vercel控制台,触发新部署时勾选Skip Cache,避免旧缓存文件干扰

内容的提问来源于stack exchange,提问作者Billy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 06:52:04