replit升级discord.js V13后better-sqlite3出现Node版本不匹配错误求助
报错根因
该报错是原生模块better-sqlite3的编译版本与当前运行的Node.js版本不匹配导致:报错中提到的NODE_MODULE_VERSION 93对应Node.js 16.x版本,而你当前实际生效的Node运行环境对应NODE_MODULE_VERSION 72,也就是Node.js 12.x版本,说明你在shell中升级的Node版本没有被Replit的运行环境实际加载。
修复步骤
1. 强制指定Replit运行的Node版本
在项目根目录创建.replit配置文件,写入以下内容(将入口文件替换为你实际的启动文件路径):
run = "npx node@16 index.js"
配置完成后在shell执行node -v,确认输出为v16.x及以上版本即可。
2. 重新编译适配版本的better-sqlite3
按顺序尝试以下操作,直到问题解决:
- 直接重建对应模块:执行命令
npm rebuild better-sqlite3 - 重建失败则清空依赖重装:
- 执行
rm -rf node_modules package-lock.json删除旧依赖和锁文件 - 执行
npm install重新安装所有依赖
- 执行
- 仍报错则强制从源码编译:执行命令
npm install better-sqlite3 --build-from-source
3. 额外检查项
如果操作后仍报错,检查package.json中的engines字段是否限制了Node.js版本,将其修改为>=16.0.0即可。
内容的提问来源于stack exchange,提问作者Refluent
相关产品推荐
相关产品推荐

