Node v16环境config.json报Unexpected token }语法错误求助
问题原因
你碰到的Unexpected token } in JSON报错是JSON语法不符合规范导致的,配置里一共有4处问题:
- 根对象缺失起始符号:你贴的配置开头直接写第一个键值对,少了包裹整个配置的左大括号
{,JSON根对象必须成对使用{}包裹。 - 多余尾随逗号:你自己标注的
actions对象闭合位置,也就是}后面多打了一个逗号,JSON标准不允许对象/数组的最后一个成员后面加尾随逗号,多余逗号会直接触发解析错误。 - 非法占位符:你在数组、对象里写的
"..."是无效内容,尤其是放在actions对象、selectMenus数组里的占位符,对象成员必须是"键名":值的键值对格式,单独放字符串属于非法结构,这些占位符要么删掉,要么替换成符合格式的实际配置项。 - 字符串值未加引号:
guildAppReqs.textReqs数组里的150m nw、650 weight没有用双引号包裹,JSON中所有字符串类型的值必须用双引号包裹,裸写文本会解析失败。
修复后的可用配置
注意:JSON原生不支持注释,下面的配置已经移除了所有非法占位符,你后续加新配置项的时候,记得不要在最后一个成员后面加多余逗号。
{ "discordGuildId":"775307362915450900", "hypixelGuildId":"60a690798ea8c9bb7f6d9b30", "colours":{ "main":"00FFF0", "secondary":"202225", "success":"00FF50", "warning":"FFFF10", "error":"FF1F00" }, "roles":{ "guildMemberRole":"955388286539558932", "helpers":[ "890624191508926505", "959322231735996426" ], "adminRole":[ "847067680791986208", "890624191508926505" ] }, "scheduledEvents":{ "leaderboardDataUpdate":"*/1 * */1 * *" }, "channels":{ "logChannelId":"987630136767705158", "appChannelId":"987630136767705158", "queueChannelId":"841940876077826048", "ticketCategoryId":"955423323095961710", "starboardChannelId":"955423323095961710", "memberCount":{ "discord":"960082737249796096", "guild":"960082737249796096" } }, "emoji":{ "warning":"<:warning_emoji:868054485992357948>", "error":"<:error_emoji:868054485946224680>", "star":"<:GoldStar:905915895937892403>", "log":"<:log_emoji:868054485933625346>", "helpEmoji":"<:KannaSip:889543061821063189>", "helpCommands":"<:slash:913172347639435285>", "helpButtons":"<:button:913172562001928193>", "helpMenus":"<:dropdown_select:914106174754947113>", "github":"<:github:888155742719328276>", "plus":"<:plus:888072519582634075>", "minus":"<:minus:888072653003452516>" }, "selectMenus":[ { "name":"UNIQUE_STRING", "description":"STRING", "placeholder":"STRING", "disabled":true, "maxValues":"INTEGER", "minValues":"INTEGER", "options":[ { "value":"UNIQUE_STRING-example_name_1", "label":"STRING", "description":"STRING", "emoji":"EMOJI" }, { "value":"UNIQUE_STRING-example_name_2", "label":"STRING", "description":"STRING", "emoji":"EMOJI" }, { "value":"UNIQUE_STRING-example_name_3", "label":"STRING", "description":"STRING", "emoji":"EMOJI" } ], "actions":{ "UNIQUE_STRING-example_name_1":{ "actionType":"toggleRole", "roleID":"DISCORDID" }, "UNIQUE_STRING-example_name_2":{ "actionType":"removeRole", "roleID":"DISCORDID" }, "UNIQUE_STRING-example_name_3":{ "actionType":"addRole", "roleID":"DISCORDID" } } } ], "chatbridge":{ "enabled":true, "channelId":"987630984541376533", "webhook":"censored", "messagelogging":{ "enabled":false, "channelId":"DISCORDID" }, "relogOnKick":{ "enabled":false, "relogAmount":1 }, "serverJoinLeaveMessages":{ "enabled":true }, "guildJoinLeaveMessages":{ "enabled":false, "logging":false }, "autoInviteOnApp":true }, "url":{ "guild_staff_application":"URL", "forums_post":"censored" }, "guildAppReqs":{ "textReqs":[ "150m nw", "650 weight" ], "minNetworkLevel":1 }, "starboard":{ "minimumCount":1 } }
快速校验方法
改完配置不用启动整个程序,直接在项目根目录执行下面的命令就能验证JSON语法是否合法:node -e "JSON.parse(require('fs').readFileSync('./config.json', 'utf8')); console.log('JSON配置合法')"
如果输出JSON配置合法就说明语法没问题,要是还有错误会直接打印具体错误位置,方便定位。
内容的提问来源于stack exchange,提问作者Fallen Guy
相关产品推荐
相关产品推荐

