Ricerca nel sito web

node.js - Errore [ERR_REQUIRE_ESM]: require() di modulo ES ... non supportato


Sto creando un bot per Discord in TypeScript usando discord.js. Quando ho provato a compilare il codice questa mattina ho ricevuto questo errore:

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'
}

Ecco il repository GitHub: Kostegator

Risposta n. 1

L'attuale versione di node-fetch è COMPATIBILE SOLO con un'importazione ESM (usando import), non dai moduli CommonJS usando require().

Hai queste scelte da correggere:

  1. Passa il tuo progetto a un modulo ESM e caricalo con import fetch from 'node-fetch';.

  2. In una versione molto recente di nodejs, puoi importare dinamicamente un modulo ESM in un modulo CommonJS usando let fetch=await import('node-fetch').

  3. Usa la versione v2 di node-fetch che supporta ancora il caricamento con require() come spiegato qui nella documentazione.

Risposta n. 2

Con l'ultimo aggiornamento, node-fetch funziona solo utilizzando import

Potresti semplicemente installare la versione più vecchia di esso con npm i [email

Articoli correlati