代わりに、index.jsのrequireを、すべてのCommonJSモジュールで使用できる動的import()に変更します。質問する

代わりに、index.jsのrequireを、すべてのCommonJSモジュールで使用できる動的import()に変更します。質問する

私は初心者なので、Node/javascript/nfts を操作しようとして、チュートリアルに従いましたが、次のエラーが発生します。

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

私の理解では、ノード ファイルが更新されたため、チュートリアルとは異なるコードが必要ですが、どのコードをどこをどのように変更すればよいのかわかりません。できるだけ具体的に教えてください。

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));
})

ベストアンサー1

これはパッケージのためです。このパッケージの最新バージョンは ESM のみをサポートしているため、古いバージョンまたはそれ以下のバージョンnode-fetchにダウングレードする必要があります。[email protected]

npm i [email protected]

これで問題は解決するはずです。

おすすめ記事