【报错问题】 macOS 的安全策略(Gatekeeper)阻止了未签名的原生模块(bcrypt_lib.node)加载

这个错误是由于 macOS 的安全策略(Gatekeeper)阻止了未签名的原生模块(bcrypt_lib.node)加载 导致的。以下是具体解决方案:


1. 临时允许加载未签名模块(推荐先尝试)

在终端运行以下命令,临时解除限制:

bash 复制代码
sudo xattr -r -d com.apple.quarantine /Users/chengchen/Documents/666\ documents/666/666book/server/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node

此命令会移除 macOS 对该文件的隔离标记(quarantine)。


2. 完全重建 bcrypt 模块

确保编译环境正确后,彻底重新编译:

bash 复制代码
cd /Users/chengchen/Documents/666\ documents/666/666book/server
npm rebuild bcrypt --update-binary

如果失败,尝试强制重新安装:

bash 复制代码
npm uninstall bcrypt
npm install bcrypt --force

3. 检查 Xcode 命令行工具

确保已安装最新版本:

bash 复制代码
xcode-select --install

然后同意许可协议:

bash 复制代码
sudo xcodebuild -license accept

4. 修改 macOS 安全性设置(谨慎操作)

如果上述方法无效,临时放宽安全策略(仅限开发环境):

  1. 打开系统设置 → 隐私与安全性。
  2. 在底部找到提示 "已阻止加载 bcrypt_lib.node" ,点击 "仍要允许"。
  3. 重启终端后再运行项目。

5. 终极方案:换用 bcryptjs

如果仍无法解决,使用纯 JavaScript 实现的替代库:

bash 复制代码
npm uninstall bcrypt
npm install bcryptjs

然后在代码中将:

javascript 复制代码
const bcrypt = require('bcrypt');

替换为:

javascript 复制代码
const bcrypt = require('bcryptjs');

(两者 API 完全兼容,但 bcryptjs 性能略低)


关键原因说明

  • macOS Gatekeeper 会阻止加载未经验证签名的二进制文件(尤其是从网络下载的)。
  • bcrypt 的预编译二进制文件可能因路径含空格(666 documents)或权限问题被标记为不安全。
  • 解决方案的核心是 让系统信任该文件 或 绕过限制(仅限开发环境)。
相关推荐
Peter(阿斯拉)15 小时前
[macOS Tahoe 26]_[使用SmartSVN访问库路径报错的问题]
macos·svn·tahoe·smartsvn·macos26
andyweike15 小时前
iOS语法原理
macos·objective-c·cocoa
传奇开心果编程1 天前
【SwiftUI提高练中学】第8课 网络层架构:拦截器、重试、缓存与离线优先
学习·macos·ui·ios·swiftui
xUxIAOrUIII1 天前
日常笔记-1005-1
linux·笔记·python·macos
传奇开心果编程2 天前
【Compose Multiplatform 跨端开发学与练】第9课 测试与调试
android·学习·macos·ios·kotlin·web·composer
supabc1232 天前
Celium:连接 Windows、Mac、Linux 与 Android,让远程访问和设备管理更简单
android·linux·windows·macos·远程访问·网络管理·celium
牛奔2 天前
Mac 精准安装指定 macOS 版本完整教程(升级 + 降级通用)
macos
海盗12342 天前
AI 新闻日报 2026-10-05:三周重构 30 万行 / macOS 给智能体加权限锁 / 具身订单结构被摆上台面
人工智能·macos·重构·机器人·人工智能aigc
青柠之夏cc2 天前
Kotlin Multiplatform:一次编写,全平台运行,2026 年跨平台开发的 “最优解”?
macos·objective-c·cocoa
黑科技iOS上架4 天前
iOS framework/dylib动态库定向加固实战
macos·ios·objective-c·cocoa·审核·ios混淆·执行程序差异化