Node.js开发Discord机器人引入discord.js时出现Unexpected token '?'错误如何解决
问题原因
你遇到的SyntaxError是Node.js版本过低导致的语法不兼容问题:
报错中的
??是空值合并运算符,该语法仅在Node.js v14.0.0及以上版本提供支持,你当前使用的discord.js v14+版本要求Node.js最低版本为v16.9.0,Replit默认的Node.js版本低于该阈值,因此加载discord.js源码时会识别??为非法字符抛出错误。
解决方案
方案1:升级Replit环境的Node.js版本(推荐)
- 打开项目根目录,查找名为
.replit的配置文件,若不存在则直接新建该文件 - 在
.replit文件中添加如下配置:
[nix] channel = "stable-22_11"
- 根目录下新建名为
replit.nix的配置文件,添加如下内容指定Node.js版本:
{ pkgs }: { deps = [ pkgs.nodejs-18_x ]; }
- 保存所有配置后重启项目运行,执行
node -v命令确认版本高于v16.9.0后,即可正常引入discord.js。
方案2:降级discord.js版本
如果不想调整Node.js版本,可以将discord.js降级到兼容低版本Node的v13版本,执行如下命令即可:npm uninstall discord.js && npm install discord.js@13
注意:discord.js v13与v14的API存在差异,若你原有代码是基于v14版本编写的,需要调整适配v13的语法后才能正常运行。
内容的提问来源于stack exchange,提问作者Bluegenic
相关产品推荐
相关产品推荐

