Ubuntu 22.04运行Prisma报错GLIBC_2.33未找到如何解决
问题根因
这个报错和系统OpenSSL安装异常没有直接关系,核心原因是你当前使用的Node.js是通过snap渠道安装的:snap的core20沙箱环境内置的libc.so.6最高只支持到GLIBC_2.32版本,而系统路径下的libcrypto.so.3(属于OpenSSL 3.0组件)依赖GLIBC_2.33版本符号,Prisma 4.0.0加载查询引擎动态库时优先读取snap沙箱内的低版本glibc,就会触发版本不匹配错误。
修复方案
按优先级从高到低排列,选任意一个方案操作即可解决问题:
- 方案1(一劳永逸,推荐):替换snap版Node.js
- 执行
sudo snap remove node卸载snap安装的Node - 改用nvm版本管理工具或者系统官方包源安装Node.js LTS版本,确保Node运行时不依赖snap沙箱的隔离类库
- 回到项目目录,删除
node_modules文件夹、package-lock.json/yarn.lock/pnpm-lock.yaml锁文件,重新执行包安装命令拉取依赖,之后运行npx prisma generate即可正常执行
- 执行
- 方案2(临时绕过,无需修改Node环境):指定Prisma使用二进制引擎
- 打开项目根目录的
.env文件,新增一行配置:PRISMA_CLI_QUERY_ENGINE_TYPE=binary - 保存后直接重新执行
npx prisma generate,该配置会让Prisma放弃加载动态链接的libquery_engine库,改用静态编译的独立二进制查询引擎,绕开snap沙箱的glibc版本冲突
- 打开项目根目录的
- 方案3(适配旧环境,不想改配置可选):降级Prisma到兼容版本
- 执行依赖安装命令将Prisma版本降到3.x系列稳定版:
npm install prisma@3.15.2 @prisma/client@3.15.2 --save-dev - 版本降级后Prisma的预编译引擎默认适配OpenSSL 1.1.x版本,不会依赖需要高版本glibc的libcrypto.so.3,可直接消除报错
- 执行依赖安装命令将Prisma版本降到3.x系列稳定版:
注意:不要尝试手动替换snap沙箱内的libc文件,也不要随意修改系统/lib路径下的全局libc.so.6文件,操作不当会导致系统所有依赖glibc的程序崩溃,无法正常运行。
内容的提问来源于stack exchange,提问作者officialrajdeepsingh
相关产品推荐
相关产品推荐

