better-sqlite3与Node.js版本不兼容问题求助(Discord.js机器人)
Discord.js机器人运行时better-sqlite3版本不兼容错误
错误日志
/Users/dhyan/Downloads/Dhyan99-bot-v14 (4)/node_modules/bindings/bindings.js:121 throw e; ^ Error: The module '/Users/dhyan/Downloads/Dhyan99-bot-v14 (4)/node_modules/better-sqlite3/build/Release/better_sqlite3.node' was compiled against a different Node.js version using NODE_MODULE_VERSION 93. This version of Node.js requires NODE_MODULE_VERSION 108. Please try re-compiling or re-installing the module (for instance, using `npm rebuild` or `npm install`). at Module._extensions..node (node:internal/modules/cjs/loader:1203:18) at Module.load (node:internal/modules/cjs/loader:997:32) at Module._load (node:internal/modules/cjs/loader:838:12) at Module.require (node:internal/modules/cjs/loader:1021:19) at require (node:internal/modules/cjs/helpers:103:18) at bindings (/Users/dhyan/Downloads/Dhyan99-bot-v14 (4)/node_modules/bindings/bindings.js:112:48) at new Database (/Users/dhyan/Downloads/Dhyan99-bot-v14 (4)/node_modules/better-sqlite3/lib/database.js:48:64) at Database (/Users/dhyan/Downloads/Dhyan99-bot-v14 (4)/node_modules/better-sqlite3/lib/database.js:11:10) at new SqliteDriver (/Users/dhyan/Downloads/Dhyan99-bot-v14 (4)/node_modules/quick.db/out/drivers/SqliteDriver.js:8:25) at new QuickDB (/Users/dhyan/Downloads/Dhyan99-bot-v14 (4)/node_modules/quick.db/out/index.js:17:28) { code: 'ERR_DLOPEN_FAILED' } Node.js v18.8.0
已尝试的操作
npm uninstall better-sqlite3npm install better-sqlite3- 删除
node_modules、package-lock.json和package.json后重新安装依赖 - 切换Node.js版本:
- 16.17.0(对应NODE_MODULE_VERSION 93)
- 18.8.0(对应要求的NODE_MODULE_VERSION 108)
npm install --build-from-source
系统信息
Software: System Software Overview: System Version: macOS 12.3.1 (21E258) Kernel Version: Darwin 21.4.0 Boot Volume: Macintosh HD Boot Mode: Normal Computer Name: Dhyan’s MacBook Air User Name: Dhyan Tanna (dhyan) Secure Virtual Memory: Enabled System Integrity Protection: Enabled Time since boot: 20 days 1:27 Hardware: Hardware Overview: Model Name: MacBook Air Model Identifier: MacBookAir10,1 Chip: Apple M1 Total Number of Cores: 8 (4 performance and 4 efficiency) Memory: 8 GB System Firmware Version: 7459.101.3 OS Loader Version: 7459.101.3
针对性解决步骤
1. 安装Xcode命令行工具
确保编译环境完整:
xcode-select --install
如果提示已安装,直接跳过。
2. 彻底清理并指定ARM架构重新安装
先清理残留文件和缓存:
rm -rf node_modules package-lock.json npm cache clean --force
然后针对M1的ARM架构编译安装better-sqlite3:
npm install better-sqlite3 --build-from-source --target_arch=arm64
3. 确认Node.js为ARM版本
如果使用nvm管理Node,卸载现有版本后重新安装ARM架构版本:
nvm uninstall 18.8.0 nvm install 18.8.0 --arch=arm64 npm install
4. 尝试Rosetta兼容模式
右键终端应用 → 显示简介 → 勾选「使用Rosetta打开」,重启终端后执行:
rm -rf node_modules package-lock.json npm install
5. 升级quick.db
错误由quick.db调用better-sqlite3触发,尝试升级quick.db到最新版本:
npm install quick.db@latest
内容的提问来源于stack exchange,提问作者D99
相关产品推荐
相关产品推荐

