代码与 repl.it 上的节点版本不兼容

Incompatible code with node version on repl.it

如您所见,这是关于 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;

我该如何解决这个问题?

被npm标记为CurrentNullish coalescing (??) operator is available only to node versions 14 and above which is on LTS as of now, although discord.js version 13 and above require node version 16包含了最新的特性,报错只是说明你的节点版本低于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 并强制在 replit 上清理 npm 缓存,因此 replit 可能不会拒绝该过程)

"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` 然后按 运行 按钮。

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