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

Discord.js+Node.js运行报SyntaxError: Unexpected token '{'如何解决

问题排查与修复方案

1. 报错根因定位

你遇到的SyntaxError: Unexpected token '{'报错的直接原因是以下代码行语法错误:

mcash[${user.id}, ${message.guild.id}].mcash++;

模板变量语法${}必须包裹在反引号`中才能被JS正确解析,你直接写在方括号内属于非法语法。同时用逗号分隔两个变量作为对象键的写法不符合需求,逗号运算符会返回最后一个表达式的结果,也就是只会将message.guild.id作为键,无法实现用户+服务器的唯一索引。

除此之外你的代码还存在其他隐藏问题:

  • MessageEmbed.setDescription仅接收一个字符串参数,你传了两个参数还调用了浏览器专属的alert方法,Node.js环境无该API会额外报错
  • 代码末尾多了多余的闭合括号}});,需要和上层函数/事件监听的括号配对
  • 输入的金额没有转数字类型,叠加时会出现字符串拼接问题
  • 没有做用户初始数据判空,首次给新用户加钱时会报读取undefined错误
  • 原有角色校验代码只调用了方法没有接收返回值做权限判断

2. 修复后代码(满足金额叠加需求)

const fs = require('fs');
// 先做数据初始化,避免重启后数据丢失
let mcash = {};
if(fs.existsSync("./usercash.json")) {
  mcash = JSON.parse(fs.readFileSync("./usercash.json"));
}

// 原有业务逻辑修复
let user = message.mentions.users.first();
if (message.mentions.users.size < 1) return message.reply('Вы должны упомянуть кого-нибудь, чтобы выдать АРы.').catch(console.error);

// 提取输入金额并做合法性校验
let pcash = Number(args.slice(1).join(" "));
if(isNaN(pcash) || pcash <= 0) return message.reply("请输入合法的正整数金额").catch(console.error);

// 生成用户+服务器的唯一联合键
const userKey = `${user.id}_${message.guild.id}`;
// 初始化新用户数据
if(!mcash[userKey]) mcash[userKey] = { mcash: 0 };
// 叠加金额
mcash[userKey].mcash += pcash;

// 写入本地存储
fs.writeFile("./usercash.json", JSON.stringify(mcash), err => {
  if(err) throw err;
});

// 权限校验逻辑
const isBanker = member.roles.cache.has('899099537979899924') || member.roles.cache.some(role => role.name === 'Банкир');
if(!isBanker) return message.reply("仅银行家角色可执行该操作").catch(console.error);

// 构造消息推送
const embed = new Discord.MessageEmbed()
.setDescription(`Пополнение из банка: ${mcash[userKey].mcash}`)
.setThumbnail('https://media.discordapp.net/attachments/899085238955806742/899102776263573574/200.png?width=180&height=180')
message.author.send( {embeds:[embed] });

3. 额外注意事项

  • 确保member变量已经正确定义,未定义的话可以通过const member = message.guild.members.cache.get(user.id)获取目标用户的服务器成员对象
  • 注意和上层的事件回调、函数的括号配对,删除原有冗余的闭合括号

内容的提问来源于stack exchange,提问作者kish3r

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:15:04