/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)
我对开发不和谐机器人很感兴趣。所以我试过了。首先,它有效。 但是,我移动了服务器并进行了设置。它不起作用!请给我建议。
(请理解我写不好英文论文。抱歉)
答案 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 提示,如果它不够高,更新它!有许多 在线资源可根据您的主机系统帮助您完成此步骤。