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:
Passa il tuo progetto a un modulo ESM e caricalo con
import fetch from 'node-fetch';.In una versione molto recente di nodejs, puoi importare dinamicamente un modulo ESM in un modulo CommonJS usando
let fetch=await import('node-fetch').Usa la versione v2 di
node-fetchche supporta ancora il caricamento conrequire()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