Node.js 14环境运行discord.js音乐机器人出现throw e报错如何解决
你遇到的是原生Node模块编译版本和运行环境不匹配的错误。better-sqlite3属于带C++原生代码的Node模块,安装时会根据当前Node版本编译对应二进制文件,你本地的better-sqlite3是基于Node 12.x版本编译的(对应NODE_MODULE_VERSION 72),但当前运行环境是Node 14.x(要求NODE_MODULE_VERSION 88),版本不匹配导致模块加载失败。
解决方案:
- 优先尝试单独重新编译对应模块,在项目终端执行:
npm rebuild better-sqlite3 - 若执行后仍报错,删除项目根目录下的
node_modules文件夹和package-lock.json文件,再执行全量依赖安装:npm install - 如果是ReplIt环境默认Node版本漂移导致的问题,可在项目根目录新增
.replit配置文件,写入以下内容固定运行版本:
run = "nvm use 14 && node index.js"
- 上述方案都无效的话,可在
package.json中手动指定better-sqlite3的兼容版本为^7.4.3,再重新执行安装命令即可。
内容的提问来源于stack exchange,提问作者user16473175
相关产品推荐
相关产品推荐

