【问题标题】:Incompatible code with node version on repl.itrepl.it 上与节点版本不兼容的代码
【发布时间】:2021-11-01 13:43:32
【问题描述】:

如您所见,这是关于 discord.js 机器人的。我已经将 repl.it 上的 node.js 升级到了 16 版,但是即使我更新了它,当我点击运行时,控制台上仍然会弹出以下错误。

/home/runner/MathBot/node_modules/discord.js/src/rest/RESTManager.js:32 const token = this.client.token ?? this.client.accessToken;

我该如何解决这个问题?

【问题讨论】:

    标签: discord.js repl.it


    【解决方案1】:

    Nullish coalescing (??) 运算符仅适用于节点版本 14 and above,它目前位于 LTS 上,尽管 discord.js 版本 13 和以上需要节点version 16,被npm标记为Current并包含最新功能,错误只是表明您的节点版本低于14。

    您可以尝试以下方法:

    方法一:

    • 创建默认为节点版本 14 的 bash repl 并进一步安装依赖项 AbortController-Polyfill 以满足 discord.js v13 需要运行的功能的要求

    像这样全局定义 AbortController:​

    const { AbortController } = require('abortcontroller-polyfill/dist/cjs-ponyfill');
    global.AbortController = AbortController;  
    



    方法二
    第1步:
    将此添加到您的package.json,(这不是恶意的,它将版本更新到节点 16 并强制在 repli 时清理 npm 缓存,因此 repli 可能不会拒绝该过程)

    "scripts": {
      "start": "node .",
      "node-update": "npm i --save-dev node@16 && npm config set prefix=$(pwd)/node_modules/node && export PATH=$(pwd)/node_modules/node/bin:$PATH",
      "node-clean": "rm -rf node_modules && rm package-lock.json && npm cache clear --force && npm cache clean --force && npm i",
      "ez-v16": "npm run node-update && npm run node-clean-cache"
    }
    

    第2步:
    在你的 shell 中运行它 `npm 运行 ez-v16` 并按下运行按钮。

    【讨论】:

      【解决方案2】:

      discord.js v13 仅支持 16.6 及以上的节点版本。前往https://nodejs.org 并获取最新版本。

      【讨论】:

        猜你喜欢
        • 2019-01-04
        • 2021-10-11
        • 2010-11-19
        • 2019-12-15
        • 1970-01-01
        • 1970-01-01
        • 2018-04-10
        • 1970-01-01
        • 2023-03-28
        相关资源
        最近更新 更多