在Glitch.com部署Discord Bot遇Node包及版本兼容问题求助
在Glitch部署Discord Bot遇到的Node包及版本问题
问题描述
本地运行正常的Discord Bot,在Glitch.com部署时出现Node包相关报错,尝试多种命令后问题未解决,调整Node版本后又出现新的环境兼容问题。
当前package.json配置
{ "name": "mudbot", "version": "1.0.0", "description": "MUDbot", "main": "bot.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "discord.js": "^13.12.0", "env": "^0.0.2", "events": "^3.3.0", "fs": "^0.0.2", "i18next-node-fs-backend": "^2.1.3", "node": "^19.0.0", "node-events": "^0.0.2", "node-fs": "^0.1.7" } }
初始报错(执行node bot.js时)
Error: Cannot find module 'node:events' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15) at Function.Module._load (internal/modules/cjs/loader.js:562:25) at Module.require (internal/modules/cjs/loader.js:692:17) at require (internal/modules/cjs/helpers.js:25:18) at Object.<anonymous> (/rbd/pnpm-volume/d5c775c7-bd94-4b87-abee-5713ace40ae7/node_modules/discord.js/src/client/BaseClient.js:3:22) at Module._compile (internal/modules/cjs/loader.js:778:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) at Module.load (internal/modules/cjs/loader.js:653:32) at tryModuleLoad (internal/modules/cjs/loader.js:593:12) at Function.Module._load (internal/modules/cjs/loader.js:585:3)
已尝试npm i、npm i discord.js、enable-mnpm,问题未解决,不清楚代码何处使用node:events。
调整Node版本后的新问题
在package.json中添加"engines": { "node": "16.6.1" }后,执行npm i discord.js报错:
$ npm i discord.js node: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by node) node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.25' not found (required by node) node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by node)
使用enable-npm后可临时正常运行,但再次执行npm命令仍抛出上述错误。执行npm i和npm i discord.js后,运行node .或node bot.js报错:
$ node bot.js -su: /app/node_modules/.bin/node: No such file or directory
解决方案
1. 清理错误依赖,修正版本配置
- 从
dependencies中移除node、node-events、node-fs:这些是Node.js内置模块,手动安装会导致环境冲突;fs也是内置模块,同样可以移除。 - 修正
engines字段:discord.js v13要求Node.js 16.6.0+,指定大版本避免GLIBC兼容问题:"engines": { "node": "16.x" }
2. 重置Glitch的Node环境
- 终端执行
enable-npm切换到npm(默认pnpm可能存在缓存问题)。 - 删除旧依赖文件:
rm -rf node_modules package-lock.json - 重新安装依赖:
npm install
3. 修复node命令路径问题
若出现路径找不到的错误,说明系统优先读取了错误安装的本地node包,可直接使用全局node路径运行:
/usr/bin/node bot.js
或在package.json的scripts中添加启动命令,通过npm调用避免路径问题:
"scripts": { "start": "node bot.js", "test": "echo \"Error: no test specified\" && exit 1" }
之后执行npm start启动Bot即可。
4. 关于node:events的说明
node:events是Node.js 16+引入的内置模块前缀写法,discord.js v13内部使用了该写法,因此必须保证Node.js版本≥16.6.0,初始报错是因为Glitch默认Node版本过低或错误安装node包导致环境混乱。
内容的提问来源于stack exchange,提问作者usselman
相关产品推荐
相关产品推荐

