NodeJS项目依赖安装失败(bcrypt安装出错求助)
NodeJS项目依赖安装失败(bcrypt相关错误)
我被这个问题困扰两天了,没法在NodeJS项目目录下安装依赖,不确定是不是项目本身的问题。项目GitHub仓库地址:https://github.com/DeanShooster/NodeJS-BookStore
执行npm install时出现如下错误:
$ npm install npm WARN old lockfile npm WARN old lockfile The package-lock.json file was created with an old version of npm, npm WARN old lockfile so supplemental metadata must be fetched from the registry. npm WARN old lockfile npm WARN old lockfile This is a one-time fix-up, please be patient... npm WARN old lockfile npm ERR! code 1 npm ERR! path C:\Users\FPCC\Desktop\Web Development\NodeJS-BookStore\node_modules\bcrypt npm ERR! command failed npm ERR! command C:\Windows\system32\cmd.exe /d /s /c node-pre-gyp install --fallback-to-build npm ERR! Failed to execute 'C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js configure --fallback-to-build --module=C:\Users\FPCC\Desktop\Web Development\NodeJS-BookStore\node_modules\bcrypt\lib\binding\napi-v3\bcrypt_lib.node --module_name=bcrypt_lib --module_path=C:\Users\FPCC\Desktop\Web Development\NodeJS-BookStore\node_modules\bcrypt\lib\binding\napi-v3 --napi_version=8 --node_abi_napi=napi --napi_build_version=3 --node_napi_label=napi-v3' (1) npm ERR! node-pre-gyp info it worked if it ends with ok npm ERR! node-pre-gyp info using node-pre-gyp@1.0.8 npm ERR! node-pre-gyp info using node@19.0.1 | win32 | x64 npm ERR! node-pre-gyp info check checked for "C:\Users\FPCC\Desktop\Web Development\NodeJS-BookStore\node_modules\bcrypt\lib\binding\napi-v3\bcrypt_lib.node" (not found) npm ERR! node-pre-gyp http GET https://github.com/kelektiv/node.bcrypt.js/releases/download/v5.0.1/bcrypt_lib-v5.0.1-napi-v3-win32-x64-unknown.tar.gz npm ERR! node-pre-gyp ERR! install request to https://objects.githubusercontent.com/github-production-release-asset-2e65be/611333/2dce3380-7741-11eb-8e53-10fe9e70e497?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20221115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221115T114040Z&X-Amz-Expires=300&X-Amz-Signature=cea9b3203437b7c07a048b48de00309b6a19c51b47db7310c5c957805d904f1d&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=611333&response-content-disposition=attachment%3B%20filename%3Dbcrypt_lib-v5.0.1-napi-v3-win32-x64-unknown.tar.gz&response-content-type=application%2Foctet-stream failed, reason: connect ETIMEDOUT 185.199.110.133:443 npm ERR! node-pre-gyp WARN Pre-built binaries not installable for bcrypt@5.0.1 and node@19.0.1 (node-v111 ABI, unknown) (falling back to source compile with node-gyp) npm ERR! node-pre-gyp WARN Hit error request to https://objects.githubusercontent.com/github-production-release-asset-2e65be/611333/2dce3380-7741-11eb-8e53-10fe9e70e497?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20221115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221115T114040Z&X-Amz-Expires=300&X-Amz-Signature=cea9b3203437b7c07a048b48de00309b6a19c51b47db7310c5c957805d904f1d&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=611333&response-content-disposition=attachment%3B%20filename%3Dbcrypt_lib-v5.0.1-napi-v3-win32-x64-unknown.tar.gz&response-content-type=application%2Foctet-stream failed, reason: connect ETIMEDOUT 185.199.110.133:443 npm ERR! gyp info it worked if it ends with ok npm ERR! gyp info using node-gyp@9.1.0 npm ERR! gyp info using node@19.0.1 | win32 | x64 npm ERR! gyp info ok npm ERR! gyp info it worked if it ends with ok npm ERR! gyp info using node-gyp@9.1.0 npm ERR! gyp info using node@19.0.1 | win32 | x64 npm ERR! gyp info find Python using Python version 3.10.0 found at "C:\Users\FPCC\python3.exe" npm ERR! gyp ERR! find VS npm ERR! gyp ERR! find VS msvs_version not set from command line or npm config npm ERR! gyp ERR! find VS VCINSTALLDIR not set, not running in VS Command Prompt npm ERR! gyp ERR! find VS could not use PowerShell to find Visual Studio 2017 or newer, try re-running with '--loglevel silly' for more details npm ERR! gyp ERR! find VS looking for Visual Studio 2015 npm ERR! gyp ERR! find VS - not found npm ERR! gyp ERR! find VS not looking for VS2013 as it is only supported up to Node.js 8 npm ERR! gyp ERR! find VS npm ERR! gyp ERR! find VS ************************************************************** npm ERR! gyp ERR! find VS You need to install the latest version of Visual Studio npm ERR! gyp ERR! find VS including the "Desktop development with C++" workload. npm ERR! gyp ERR! find VS For more information consult the documentation at: npm ERR! gyp ERR! find VS https://github.com/nodejs/node-gyp#on-windows npm ERR! gyp ERR! find VS ************************************************************** npm ERR! gyp ERR! find VS npm ERR! gyp ERR! configure error npm ERR! gyp ERR! stack Error: Could not find any Visual Studio installation to use npm ERR! gyp ERR! stack at VisualStudioFinder.fail (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:122:47) npm ERR! gyp ERR! stack at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:75:16 npm ERR! gyp ERR! stack at VisualStudioFinder.findVisualStudio2013 (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:364:14) npm ERR! gyp ERR! stack at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:71:14 npm ERR! gyp ERR! stack at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:385:16 npm ERR! gyp ERR! stack at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\util.js:54:7 npm ERR! gyp ERR! stack at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\util.js:33:16 npm ERR! gyp ERR! stack at ChildProcess.exithandler (node:child_process:420:5) npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:513:28) npm ERR! gyp ERR! stack at maybeClose (node:internal/child_process:1098:16) npm ERR! gyp ERR! System Windows_NT 10.0.19044 npm ERR! gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "configure" "--fallback-to-build" "--module=C:\\Users\\FPCC\\Desktop\\Web Development\\NodeJS-BookStore\\node_modules\\bcrypt\\lib\\binding\\napi-v3\\bcrypt_lib.node" "--module_name=bcrypt_lib" "--module_path=C:\\Users\\FPCC\\Desktop\\Web Development\\NodeJS-BookStore\\node_modules\\bcrypt\\lib\\binding\\napi-v3" "--napi_version=8" "--node_abi_napi=napi" "--napi_build_version=3" "--node_napi_label=napi-v3" npm ERR! gyp ERR! cwd C:\Users\FPCC\Desktop\Web Development\NodeJS-BookStore\node_modules\bcrypt npm ERR! gyp ERR! node -v v19.0.1 npm ERR! gyp ERR! node-gyp -v v9.1.0 npm ERR! gyp ERR! not ok npm ERR! node-pre-gyp ERR! build error npm ERR! node-pre-gyp ERR! stack Error: Failed to execute 'C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js configure --fallback-to-build --module=C:\Users\FPCC\Desktop\Web Development\NodeJS-BookStore\node_modules\bcrypt\lib\binding\napi-v3\bcrypt_lib.node --module_name=bcrypt_lib --module_path=C:\Users\FPCC\Desktop\Web Development\NodeJS-BookStore\node_modules\bcrypt\lib\binding\napi-v3 --napi_version=8 --node_abi_napi=napi --napi_build_version=3 --node_napi_label=napi-v3' (1) npm ERR! node-pre-gyp ERR! stack at ChildProcess.<anonymous> (C:\Users\FPCC\Desktop\Web Development\NodeJS-BookStore\node_modules\@mapbox\node-pre-gyp\lib\util\compile.js:89:23) npm ERR! node-pre-gyp ERR! stack at ChildProcess.emit (node:events:513:28) npm ERR! node-pre-gyp ERR! stack at maybeClose (node:internal/child_process:1098:16) npm ERR! node-pre-gyp ERR! stack at ChildProcess._handle.onexit (node:internal/child_process:304:5) npm ERR! node-pre-gyp ERR! System Windows_NT 10.0.19044 npm ERR! node-pre-gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\FPCC\\Desktop\\Web Development\\NodeJS-BookStore\\node_modules\\@mapbox\\node-pre-gyp\\bin\\node-pre-gyp" "install" "--fallback-to-build" npm ERR! node-pre-gyp ERR! cwd C:\Users\FPCC\Desktop\Web Development\NodeJS-BookStore\node_modules\bcrypt npm ERR! node-pre-gyp ERR! node -v v19.0.1 npm ERR! node-pre-gyp ERR! node-pre-gyp -v v1.0.8 npm ERR! node-pre-gyp ERR! not ok npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\FPCC\AppData\Local\npm-cache\_logs\2022-11-15T11_40_05_764Z-debug-0.log
我尝试了谷歌上能找到的所有解决方案,但均未奏效,恳请帮助解决该问题。
解决方案
1. 修复网络问题,手动下载预编译包
错误核心原因之一是无法下载bcrypt的预编译二进制包(超时):
- 切换至可稳定访问GitHub的网络环境,或配置代理确保能访问GitHub资源
- 手动下载对应包:
- 找到bcrypt v5.0.1版本的win32-x64预编译包
- 将下载的文件解压后,把
bcrypt_lib.node放到C:\Users\FPCC\Desktop\Web Development\NodeJS-BookStore\node_modules\bcrypt\lib\binding\napi-v3\目录下 - 重新执行
npm install
2. 配置node-gyp编译环境
当预编译包无法使用时,node-gyp需要本地编译环境,错误提示缺少Visual Studio:
- 安装Visual Studio 2017及以上版本,必须勾选「使用C++的桌面开发」组件
- 或用管理员权限打开命令行,执行:
npm install --global windows-build-tools - 你的Python版本(3.10.0)符合node-gyp要求,无需调整
3. 降级Node版本到LTS
bcrypt@5.0.1与Node@19.0.1存在兼容性问题,降级到LTS版本可避免:
- 使用nvm管理Node版本:
nvm install 18 nvm use 18 - 删除项目目录下的
node_modules文件夹和package-lock.json文件,重新执行npm install
4. 替换bcrypt为bcryptjs
如果不想折腾编译环境,可改用纯JS实现的bcryptjs,无需编译:
- 卸载bcrypt:
npm uninstall bcrypt - 安装bcryptjs:
npm install bcryptjs - 修改项目中所有引入bcrypt的代码,替换为bcryptjs,两者API基本一致
内容的提问来源于stack exchange,提问作者Yazan Ali
相关产品推荐
相关产品推荐

