如何解决运行discord.js代码时出现SyntaxError: Unexpected token '?'错误
报错原因
报错触发的核心是你当前使用的Node.js运行环境版本过低,无法识别空值合并运算符??:??是ES2020新增的语法,Node.js从14.0.0版本才开始原生支持该语法。你安装的discord.js版本依赖了该语法,运行时低版本Node解析对应代码失败,就抛出了Unexpected token '?'的语法错误。
解决方法
- 方案1:升级Node.js版本
将运行环境的Node.js版本升级到14.x及以上的长期支持版本,即可直接兼容该语法,适配当前安装的discord.js版本。
如果是在Replit平台运行,可以在项目根目录创建.replit配置文件,添加以下内容指定运行版本:run = "nvm use 18 && node index.js" - 方案2:降级discord.js版本
若不方便升级Node.js版本,可以卸载当前高版本discord.js,安装适配低版本Node的v12版本:
降级后需要核对现有代码的API调用逻辑,部分API在不同版本discord.js中存在用法差异。npm uninstall discord.js npm install discord.js@12.x - 方案3:临时修改依赖代码(仅适合临时测试)
手动修改报错的node_modules/discord.js/src/rest/RESTManager.js文件,将对应行代码替换为低版本兼容写法:
该修改仅临时生效,重新安装依赖后改动会被覆盖。// 原代码 // const token = this.client.token ?? this.client.accessToken; // 替换为 const token = this.client.token || this.client.accessToken;
内容的提问来源于stack exchange,提问作者hi12167pies
相关产品推荐
相关产品推荐

