You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 15:54:30