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

Node.js 14安装bcrypt.js及低版本bcrypt失败问题求助

问题描述

我在使用Node.js 14版本安装bcrypt.js包时遇到问题,且安装bcrypt 5.x及更低版本时也无法成功,报错信息如下:

node-pre-gyp 警告:bcrypt@5.1.1 和 node@10.19.0(node-v64 ABI,glibc)无法安装预编译二进制包,将回退到用node-gyp从源码编译
node-pre-gyp 警告:遇到错误 ENOENT:没有该文件或目录,mkdir
gyp 配置错误!
gyp 错误栈:Error: EACCES:权限被拒绝,创建目录 '//node_modules/bcrypt/build'
gyp 系统信息:Linux 5.4.0-56-generic
gyp 命令:"/usr/bin/node" "/usr/bin/node-gyp" "configure" "--fallback-to-build" "--module=//node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node" "--module_name=bcrypt_lib" "--module_path=//node_modules/bcrypt/lib/binding/napi-v3" "--napi_version=5" "--node_abi_napi=napi" "--napi_build_version=3" "--node_napi_label=napi-v3"
gyp 当前工作目录://node_modules/bcrypt
gyp node版本:v10.19.0
gyp node-gyp版本:v6.1.0
gyp 执行失败!
node-pre-gyp 构建错误!
node-pre-gyp 错误栈:Error: 执行 '/usr/bin/node /usr/bin/node-gyp configure --fallback-to-build --module=//node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node --module_name=bcrypt_lib --module_path=//node_modules/bcrypt/lib/binding/napi-v3 --napi_version=5 --node_abi_napi=napi --napi_build_version=3 --node_napi_label=napi-v3' 失败(状态码1)
node-pre-gyp 错误栈:在 ChildProcess.cmd.on (//node_modules/@mapbox/node-pre-gyp/lib/util/compile.js:89:23)
node-pre-gyp 错误栈:在 ChildProcess.emit (events.js:198:13)
node-pre-gyp 错误栈:在 maybeClose (internal/child_process.js:982:16)
node-pre-gyp 错误栈:在 Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)
node-pre-gyp 系统信息:Linux 5.4.0-56-generic
node-pre-gyp 命令:"/usr/bin/node" "//node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp 当前工作目录://node_modules/bcrypt
node-pre-gyp node版本:v10.19.0
node-pre-gyp node-pre-gyp版本:v1.0.11
node-pre-gyp 执行失败!
执行 '/usr/bin/node /usr/bin/node-gyp configure --fallback-to-build --module=//node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node --module_name=bcrypt_lib --module_path=//node_modules/bcrypt/lib/binding/napi-v3 --napi_version=5 --node_abi_napi=napi --napi_build_version=3 --node_napi_label=napi-v3' 失败(状态码1)
npm 警告:argus_sv2@1.0.0 没有描述信息
npm 警告:argus_sv2@1.0.0 没有仓库字段
npm 警告:跳过可选依赖:fsevents@2.3.3 (node_modules/fsevents):
npm 警告:不支持的平台:fsevents@2.3.3 需要 {"os":"darwin","arch":"any"},当前平台是 {"os":"linux","arch":"x64"}

npm 错误码:ELIFECYCLE
npm 错误号:1
npm 错误:bcrypt@5.1.1 安装脚本:node-pre-gyp install --fallback-to-build
npm 错误:退出状态1
npm 错误:
npm 错误:bcrypt@5.1.1 安装脚本执行失败。
npm 错误:这可能不是npm的问题,上面可能有更多日志输出。

npm 错误:本次运行的完整日志可在以下位置查看:
npm 错误:/root/.npm/_logs/2024-01-02T08_19_53_217Z-debug.log
解决方法

1. 修正Node.js版本

日志显示当前实际使用的是Node.js v10.19.0,而非你声明的v14。bcrypt 5.x对Node.js v10的兼容有限,且预编译二进制包无法匹配该版本。先切换到Node.js 14:

  • 若使用nvm,执行:nvm use 14
  • 未安装nvm的话,先安装nvm再切换版本,或直接升级Node.js到v14。

2. 解决权限问题

报错核心是权限不足无法创建build目录,可通过以下方式解决:

  • 临时允许权限安装(仅用于测试,注意安全):
    npm install bcrypt@5.x --unsafe-perm
    
  • 确保当前用户对项目目录拥有写权限:
    chown -R $USER:$USER ./node_modules
    npm install bcrypt@5.x
    
  • 避免用root用户执行npm install,改用普通用户操作。

3. 安装源码编译依赖

当预编译二进制包不可用时,node-gyp需要依赖编译工具:

  • Ubuntu/Debian系统:
    sudo apt-get install build-essential python3
    
  • CentOS/RHEL系统:
    sudo yum groupinstall 'Development Tools' && sudo yum install python3
    

安装完成后重新执行npm install bcrypt@5.x。

4. 替代方案:使用bcryptjs

若上述方法仍无法解决,可直接使用纯JavaScript实现的bcryptjs,无需编译:

npm install bcryptjs

bcryptjs的API与bcrypt几乎完全一致,可直接替换使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 06:18:10