Discord Bot托管运行bot.js报Unexpected token '.'语法错误求助
报错根因
这个语法错误是Node.js版本过低导致的。你代码里用的可选链操作符?.是ES2020新增的语法,要求Node.js版本至少为14.0.0才能正常解析,你当前托管环境安装的Node版本低于这个要求,所以解析到channel?.的点号时直接抛出Unexpected token '.'错误。
修复方案
- 先在托管环境的终端执行
node -v查看当前Node版本,确认版本低于14.0.0的话直接升级到18.x或20.x的长期支持(LTS)版本,这是最一劳永逸的解决方法——现在Discord.js官方库最低要求Node 16.9以上,装高版本LTS也能避免后续其他语法、依赖兼容问题。 - 升级完Node版本后,在项目根目录重新执行
npm install重装所有依赖,再启动bot即可。 - 如果你的托管平台不支持自由切换Node版本,只能手动修改代码做兼容:把报错行的可选链写法替换成对属性逐层判断的旧版写法,原报错行:
替换为:if (channel?.messages.cache.has(packet.d.message_id)) return;
注意要把项目里所有用到if (channel && channel.messages && channel.messages.cache && channel.messages.cache.has(packet.d.message_id)) return;?.、??这类高版本新语法的代码全部替换成兼容写法,否则运行到对应位置还会抛出相同错误,操作成本远高于直接升级Node版本,优先选升级方案。
内容的提问来源于stack exchange,提问作者Curtis Lake
相关产品推荐
相关产品推荐

