【问题标题】:node js discord bot is not worksnode js不和谐机器人不起作用
【发布时间】:2021-09-12 13:19:27
【问题描述】:
    /home/discord/project/bloodmoon/node_modules/discord.js/src/client/Client.js:42
    } catch {
            ^

SyntaxError: Unexpected token {
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:616:28)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/home/discord/project/bloodmoon/node_modules/discord.js/src/index.js:8:11)

我对开发不和谐机器人很感兴趣。所以我试了一下。首先,它有效。 但是,我移动了服务器并设置了它。它不起作用!请给我建议。

(请理解我写不好英文作文。抱歉)

【问题讨论】:

  • 你能分享你的代码吗?这看起来像一个语法错误,我们将无法仅提供错误消息:D
  • 这不是语法错误! “首先,它可以工作。但是,我移动了服务器并设置了它。但它不起作用!”

标签: node.js discord discord.js


【解决方案1】:

如果您检查discord.js source code,您可以看到当他们的代码需要worker_threads 模块时出现错误,他们会尝试静默忽略。他们只是在catch 之后省略了通常的(error) 部分:

try {
  // Test if worker threads module is present and used
  data = require('worker_threads').workerData || data;
} catch {
  // Do nothing
}

但是,它仅适用于较新版本的 JavaScript,而较旧的 JavaScript 会抛出 SyntaxError。因此,您必须使用旧版本的 Node,因为 optional catch binding 仅在 Node.js v10+ 中可用。

以下是 Node v8 中的示例:

// using Node v8
try { error } catch { console.log('oops') }

⬇⬇结果⬇⬇

try { error } catch { console.log('oops') }
                    ^

SyntaxError: Unexpected token {

虽然它在 Node v10+ 中运行良好:

// using Node v16
try { error } catch { console.log('oops') }

⬇⬇结果⬇⬇

oops

要解决这个问题,您需要将update your Node version 至少升级到 v12,如discord.js docs 中所述:

v12 需要 Node 12.x 或更高版本,因此请确保您是最新的。到 检查您的节点版本,在终端或命令中使用 node -v 提示,如果不够高,请更新!有许多 在线资源可根据您的主机系统帮助您完成此步骤。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 2019-02-14
    • 2021-08-14
    • 2021-10-05
    • 2021-01-17
    • 1970-01-01
    • 2018-03-20
    相关资源
    最近更新 更多