Mac环境安装better-sqlite3报错 安装流程末尾阶段失败
故障定位
从安装日志可直接定位失败原因:
- 你当前安装的
better-sqlite3@7.5.3版本发布时间较早,未提供Mac arm64(M1/M2系列芯片)架构的预编译二进制文件,安装时自动触发本地源码编译流程 - 编译阶段出现两个致命错误:一是项目存放路径包含空格/特殊字符,导致shell解析路径时断裂,抛出路径不存在错误;二是安装包解压不完整,编译依赖的
sqlite3.c源码文件缺失,触发ENOENT文件系统错误 - 额外兼容问题:当前使用的
node-gyp@9.0.0与Python 3.10的组合,编译旧版本原生Node模块时存在已知兼容问题,会提升编译失败概率
修复步骤
按顺序执行以下操作即可解决问题:
- 第一步先把项目文件夹移动到无空格、无中文、无特殊符号的纯英文短路径下,例如
~/Projects/your-bot-project,不要放在类似~/Documents/Coding Practice/这类带空格的目录中,路径空格是本次shell路径解析报错的核心诱因。 - 安装Mac端原生模块编译必备的命令行工具,终端执行以下命令,等待安装完成:
xcode-select --install - 清理之前安装失败产生的缓存与残留文件,在项目根目录执行:
rm -rf node_modules package-lock.json npm cache clean --force - 优先选择升级better-sqlite3到最新稳定版,新版本自带arm64架构预编译包,可直接跳过本地编译流程,从根源避开编译报错,执行:
npm install better-sqlite3@latest --save - 如果因项目依赖锁版本必须使用
better-sqlite3@7.5.3,安装前指定架构参数适配arm64环境,同时建议将本地Python版本切换到3.9,规避Python 3.10与旧版node-gyp的兼容问题,执行安装命令:npm_config_arch=arm64 npm install better-sqlite3@7.5.3 - better-sqlite3安装完成后,重新安装quick.db即可正常使用:
npm install quick.db@latest --save
内容的提问来源于stack exchange,提问作者larkx
相关产品推荐
相关产品推荐

