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

Vercel部署安装bcrypt失败,更换bcryptjs后仍遇GLIBC版本问题

解决Vercel构建时Node依赖GLIBC版本缺失的问题

问题描述

Vercel构建项目时持续报错,错误信息如下:

npm ERR! code 1
npm ERR! path /vercel/path0/node_modules/bcrypt
npm ERR! command failed
npm ERR! command sh -c node-pre-gyp install --fallback-to-build
npm ERR! node: /lib64/libm.so.6: version GLIBC_2.27' not found (required by node) npm ERR! node: /lib64/libc.so.6: version GLIBC_2.28' not found (required by node)
npm ERR! A complete log of this run can be found in:
npm ERR! /vercel/.npm/_logs/2023-05-27T05_36_03_200Z-debug-0.log
Error: Command "npm install" exited with 1
BUILD_UTILS_SPAWN_1: Command "npm install" exited with 1

已替换bcrypt为bcryptjs解决了该包的安装问题,但Node依赖的GLIBC版本缺失错误仍存在;将构建命令改为npm start(实际执行node src/app.js)后能完成构建,但请求时会报错。


解决方案

1. 指定兼容的Node版本

Vercel构建容器基于CentOS 7,GLIBC版本较低,需使用与之兼容的Node长期支持版(如16.x):

  • 在项目根目录创建.nvmrc文件,写入指定版本:
    16.20.0
    
  • 在vercel.json中配置构建环境变量,锁定Node版本:
    {
      "build": {
        "env": {
          "NODE_VERSION": "16.20.0"
        }
      }
    }
    

2. 优化依赖安装流程

  • 优先选择纯JS实现的依赖包,避免使用需要本地编译的原生依赖(如已用bcryptjs替代bcrypt)。
  • 若必须保留原生依赖,可在package.json中调整安装脚本,跳过不必要的编译步骤:
    {
      "scripts": {
        "install": "npm install --ignore-scripts"
      }
    }
    

3. 修正构建命令

将构建命令改回标准的“安装依赖+构建”流程,确保依赖在构建阶段正确安装:

npm install && npm run build

确保package.json中的build脚本符合项目生产构建要求(Express类项目若无需编译,可设置build脚本为echo "Build complete")。

4. 启用Vercel构建缓存

在vercel.json中开启Node编译缓存,提升构建效率并减少编译错误:

{
  "build": {
    "env": {
      "ENABLE_NODEJS_V8_COMPILE_CACHE": "1"
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 02:33:19