MacOS M1设备yarn install安装bcrypt出现node-pre-gyp报错问题问询
报错根因
- 核心问题1:你的项目路径包含空格(
/Users/raydman/Projects/main inf/backend中的「main inf」),编译时路径被截断,导致找不到依赖文件 - 核心问题2:你使用的bcrypt@5.0.1未提供Mac M系列芯片(arm64架构)对应的预编译二进制包,拉取404后fallback到本地编译又被路径问题阻断
- 额外影响:本地默认Python版本为2.7,与新版node-gyp兼容性差,也可能导致编译失败
可行解决步骤
第一步:修复路径问题
将项目父文件夹名称中的空格删除,比如把main inf改为main_inf或maininf,确保项目完整路径没有任何空格、中文或特殊字符。
bcryptjs是纯JS实现无需编译,安装它也报错100%是路径空格导致的,修复路径后可先尝试重新安装验证。
第二步:适配M系列芯片安装bcrypt
选择以下任意一种方案即可:
方案1(推荐):升级bcrypt到适配版本
bcrypt@5.0.2及以上版本已官方支持Mac arm64架构预编译包,无需本地编译直接安装:
yarn add bcrypt@latest
方案2(需保留bcrypt@5.0.1版本时使用):配置本地编译环境
- 先安装Xcode命令行工具,提供编译所需的clang、make等依赖:
xcode-select --install
- 安装Python3,配置npm使用Python3作为编译默认Python版本:
npm config set python python3
- 清理bcrypt缓存后重新安装:
yarn cache clean bcrypt yarn add bcrypt@5.0.1
验证方法
安装完成后执行node -e "console.log(require('bcrypt').hashSync('test', 10))",如果输出加密后的哈希字符串则说明安装成功。
内容的提问来源于stack exchange,提问作者Dmitry Bochok
相关产品推荐
相关产品推荐

