SyntaxError: Value expected (char 1)

SyntaxError: Value expected (char 1)

我正在尝试在 Discord.js v12 中创建一个 !calculate 命令。 我正在使用 mathjs,这是我当前的代码:

client.on('message', msg => {
    if(!msg.content.startsWith('!')) return;

    const args = msg.content.split(/[\ ]/g);
    const cmd = args[0].slice(1).toLowerCase();

    switch (cmd) {
        case 'calculate':
        case 'calc':
            if(!args[0]) return msg.channel.send('Please input a calculation.');

            let resp;
            try {
                resp = math.evaluate(args.join(''));
            } catch (e) {
                console.log(e);
            }

            const membed = new Discord.MessageEmbed()
                .setColor('#ffaa00')
                .setTitle('Math Calculation')
                 .addField('Input', `\`\`\`css\n${args.slice(1).join(' ')}\`\`\``)
                .addField('Output', `\`\`\`css\n${resp}\`\`\``);

            msg.channel.send(membed);
            break;

但是,我收到以下控制台错误:

SyntaxError: Value expected (char 1)
    at createSyntaxError (D:\Documents\test\Node.js\Discord.js\calculate\node_modules\mathjs\lib\expression\parse.js:1705:17)
    at parseEnd (D:\Documents\test\Node.js\Discord.js\calculate\node_modules\mathjs\lib\expression\parse.js:1669:13)
    at parseParentheses (D:\Documents\test\Node.js\Discord.js\calculate\node_modules\mathjs\lib\expression\parse.js:1655:12)
    at parseNumber (D:\Documents\test\Node.js\Discord.js\calculate\node_modules\mathjs\lib\expression\parse.js:1626:12)
    at parseObject (D:\Documents\test\Node.js\Discord.js\calculate\node_modules\mathjs\lib\expression\parse.js:1607:12)
    at parseMatrix (D:\Documents\test\Node.js\Discord.js\calculate\node_modules\mathjs\lib\expression\parse.js:1532:12)
    at parseSingleQuotesString (D:\Documents\test\Node.js\Discord.js\calculate\node_modules\mathjs\lib\expression\parse.js:1433:12)
    at parseDoubleQuotesString (D:\Documents\test\Node.js\Discord.js\calculate\node_modules\mathjs\lib\expression\parse.js:1382:12)
    at parseSymbol (D:\Documents\test\Node.js\Discord.js\calculate\node_modules\mathjs\lib\expression\parse.js:1270:12)
    at parseCustomNodes (D:\Documents\test\Node.js\Discord.js\calculate\node_modules\mathjs\lib\expression\parse.js:1239:12) {
  char: 1
}

嵌入看起来像这样:

您对 args 数组的处理不正确。有 2 个问题:

  1. args[0]需要改为args[1],因为args[0]是 引用命令,而不是计算。

    if(!args[0]) return msg.channel.send('Please input a calculation.');
    // should become
    if(!args[1]) return msg.channel.send('Please input a calculation.');
    
  2. args.join('')需要改为args.slice(1).join(''),这样一开始只包含计算,不包含命令。

    resp = math.evaluate(args.join(''));
    // should become
    resp = math.evaluate(args.slice(1).join(''));