错误 [ERR_REQUIRE_ESM]:ES 模块的 require() ... 不支持

Pro*_*711 34 node.js typescript discord.js

我正在使用 制作一个不和谐的TypeScript机器人discord.js。当我今天早上尝试编译代码时,出现以下错误:

C:\SECRET\Kostegator\dist\Util\getMeme.js:17
const node_fetch_1 = __importDefault(require("node-fetch"));
                                     ^

Error [ERR_REQUIRE_ESM]: require() of ES Module C:\SECRET\Kostegator\node_modules\node-fetch\src\index.js from C:\SECRET\Kostegator\dist\Util\getMeme.js not supported.
Instead change the require of index.js in C:\SECRET\Kostegator\dist\Util\getMeme.js to a dynamic import() which is available in all CommonJS modules.
    at Object.<anonymous> (C:\SECRET\Kostegator\dist\Util\getMeme.js:17:38)
    at Object.<anonymous> (C:\SECRET\Kostegator\dist\Util\index.js:15:14)
    at Object.<anonymous> (C:\SECRET\Kostegator\dist\Commands\BotOwner\startAutoUpdate.js:4:16)
    at C:\SECRET\Kostegator\dist\Client\index.js:61:41
    at Array.forEach (<anonymous>)
    at ExtendedClient.<anonymous> (C:\SECRET\Kostegator\dist\Client\index.js:58:48)        
    at Generator.next (<anonymous>)
    at C:\SECRET\Kostegator\dist\Client\index.js:27:71
    at new Promise (<anonymous>)
    at __awaiter (C:\SECRET\Kostegator\dist\Client\index.js:23:12)
    at ExtendedClient.init (C:\SECRET\Kostegator\dist\Client\index.js:51:16)
    at Object.<anonymous> (C:\SECRET\Kostegator\dist\index.js:19:4) {
  code: 'ERR_REQUIRE_ESM'
}
Run Code Online (Sandbox Code Playgroud)

这是 GitHub 存储库:Kostegator

jfr*_*d00 35

当前版本node-fetch仅与 ESM 导入(使用 )兼容import,而不与使用 的 CommonJS 模块兼容require()

您有以下选择来修复:

  1. 将您的项目切换到 ESM 模块并使用import fetch from 'node-fetch';.

  2. 在 Nodejs 的最新版本中,您可以使用let fetch = await import('node-fetch').

  3. node-fetch使用仍支持加载的v2 版本require(),如文档中所述。


小智 17

使用最新更新,node-fetch只能使用import

你可以通过以下方式安装它的旧版本 npm i node-fetch@2.6.1


Nic*_*ano 7

对于那些尝试使用 cPanel 功能部署 NodeJS 应用程序的人来说,请记住它在幕后使用Phusion Passenger。该工具需要有一个非模块入口点,例如:

// entry.cjs DONT FORGET TO USE .cjs and not .js

async function loadApp() {
    const { app } = await import("./app.js"); // this is your normal entry file - (index.js, main.js, app.mjs etc.)
}
loadApp()

Run Code Online (Sandbox Code Playgroud)

原始答案在这里(值得您投票):/sf/answers/5033127991/