Ändern Sie stattdessen die Anforderung von index.js in ein dynamisches import(), das in allen CommonJS-Modulen verfügbar ist

Lesezeit: 3 Minuten

Benutzeravatar von Basse Nord
Basse Nord

Beim Versuch, mit node/javascript/nfts zu arbeiten, bin ich ein Noob und habe ein Tutorial befolgt, aber ich erhalte diesen Fehler:

error [ERR_REQUIRE_ESM]: require() of ES Module [...] is not supported. Instead change the require of index.js [ in my file...]  to a dynamic import() which is available in all CommonJS modules

Mein Verständnis ist, dass sie die Knotendatei aktualisiert haben, also brauche ich einen anderen Code als den im Tutorial, aber ich weiß nicht, welchen ich wo und zu was ändern soll. Bitte seien Sie so genau wie möglich

const FormData = require('form-data');
const fetch = require('node-fetch');
const path = require("path")
const basePath = process.cwd();
const fs = require("fs");

fs.readdirSync(`${basePath}/build/images`).foreach(file).forEach(file => {
    const formData = new FormData();
    const fileStream = fs.createReadStream(`${basePath}/build/images/${file}`);
    formData.append('file',fileStream);

    let url="https://api.nftport.xyz/v0/files";

    let options = {
      method: 'POST',
      headers: {
        Authorization: '[...]',
      },
      body: formData
    };
    
    fetch(url, options)
      .then(res => res.json())
      .then(json => {
       const fileName = path.parse(json.file_name).name;
       let rawdata = fs.readFileSync(`${basePath}/build/json/${fileName}.json`);
       let metaData = JSON.parse(rawdata);

       metaData.file_url = json.ipfs_url;

       fs.writeFileSync(`${basePath}/build/json${fileName}.json`, JSON.stringify(metaData, null, 2));

       console.log(`${json.file_name} uploaded & ${fileName}.json updated!`);
      })
      .catch(err => console.error('error:' + err));
})

  • Ich habe npm i [email protected] gemacht, es scheint, als hätte es das Problem behoben, dann habe ich node utils/nftport/uploadFiles.js in das Terminal geschrieben (kenne die richtigen Begriffe nicht) und es hieß, “Datei ist nicht definiert”. diese Probleme verbunden? was habe ich falsch gemacht?

    – Basse Nord

    31. Dezember 2021 um 10:33 Uhr

Es liegt an der node-fetch Paket. Da neuere Versionen dieses Pakets nur ESM unterstützen, müssen Sie es auf eine ältere Version herunterstufen [email protected] oder niedriger.

npm i [email protected]

Dies sollte das Problem lösen.

  • Woher wissen Sie, dass dies der Fehler war, ich werde seit der letzten Stunde verrückt

    – jea

    8. Juni um 15:19 Uhr

  • es steht in der dokumentation: npmjs.com/package/node-fetch#user-content-commonjsCommonJS node-fetch from v3 ist ein reines ESM-Modul – Sie können es nicht mit require() importieren. Wenn Sie nicht zu ESM wechseln können, verwenden Sie bitte v2, das mit CommonJS kompatibel bleibt. Kritische Fehlerbehebungen werden weiterhin für v2 veröffentlicht. npm install [email protected]

    – PhilWilliammee

    31. Oktober um 19:09 Uhr


  • Die Anleitung von @PhilWilliammee ist der richtige Weg 2.6.1 hat jetzt eine Audit-Warnung.

    – Herr Rogers

    17. November um 22:58 Uhr

  • 2.6.7 funktioniert auch, frans

    – mikeDOTexe

    19. November um 16:58 Uhr

Benutzeravatar von Mona Thahmeen
Mona Thahmeen

Gehen Sie zu Ihrer Datei package.json und schreiben Sie

"type": "module",

oben Debuggen.

und statt zu schreiben require('chalk') in der js-Datei ändern Sie es in import chalk from 'chalk'

  • Dies kann nicht gemischt mit ems npm deps und cmj npm deps funktionieren.

    – JackChouMine

    8. April um 16:54 Uhr

  • Ja, das funktioniert nur in einigen Situationen, in meinem Fall beim Hinzufügen "type": "module" Dieses Problem wurde behoben, aber andere Dinge wurden inkompatibel

    – n1kk

    30. Mai um 11:06 Uhr

Dies kann auftreten, wenn Sie die neueste Version eines Pakets installieren, das ein Problem mit dem Modulimport hat.

In meinem Fall bekam ich den Fehler nach der Installation der neuesten Version von crypto-random-string Paket. Um zu erfahren, welches Paket diesen Fehler verursacht, überprüfen Sie die Meldung vor dem oben gemeldeten Fehler. Bei mir liest es sich so:
error: uncaughtException: require() of ES Module /Users/myname/Documents/mydir/anotherdir/my-project/node_modules/crypto-random-string/index.js

Um das Problem zu beheben, habe ich nur auf eine frühere Version heruntergestuft, indem ich Folgendes getan habe:

  1. yarn remove crypto-random-string
  2. yarn add [email protected]

Ich hatte diesen Fehler auf common.js im Angular-Devkit nach dem Upgrade auf Angle 13. Ich habe festgestellt, dass dies während des Upgrades übersehen wurde:

ng update überprüft oder aktualisiert keine @angular-devkit-Pakete

Ich habe es losgeworden mit:

ng update @angular-devkit/build-angular 

Benutzeravatar von Majid Ali
Majid Ali

Ich habe die eine Aussage extra hinzugefügt, die Sie sehen können "type": "module", Aussage, notiert nach license.

"author": "",
  "license": "ISC",
  "type": "module",
  "dependencies": {
    "chalk": "^5.0.1"
    
  }
}

1434580cookie-checkÄndern Sie stattdessen die Anforderung von index.js in ein dynamisches import(), das in allen CommonJS-Modulen verfügbar ist

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy