node js discord bot 不起作用

时间:2021-06-30 11:19:45

标签: node.js discord discord.js

    /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)

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

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

1 个答案:

答案 0 :(得分:1)

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

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

但是,它仅适用于较新版本的 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 提示,如果它不够高,更新它!有许多 在线资源可根据您的主机系统帮助您完成此步骤。