es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

En lugar de requerir index.js, cambia a una importación dinámica() que está disponible en todos los módulos CommonJS.

Intentando trabajar con node/javascript/nfts, soy un novato y seguí un tutorial, pero obtengo este error:

error [ERR_REQUIRE_ESM]: require() del módulo ES [...] no es compatible. En su lugar, cambie el require de index.js [en mi archivo...] a una importación dinámica() que está disponible en todos los módulos CommonJS

Mi entendimiento es que han actualizado el archivo de node, por lo que necesito un código diferente al del tutorial, pero no sé cuál se supone que debo cambiar, dónde y a qué. Por favor, sé tan específico como puedas.

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));
})
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error que estás viendo se debe a que el código está utilizando una declaración require con un módulo ES, lo cual no es compatible con la versión actual de node. Para solucionar esto, debes reemplazar la declaración require con una declaración de importación dinámica, la cual está disponible en todos los módulos CommonJS.

    Para hacer esto, puedes cambiar el siguiente código:

    const FormData = require('form-data');
    const fetch = require('node-fetch');
    

    a esto:

    const FormData = require('form-data');
    const fetch = require('node-fetch').default;
    

    Esto debería resolver el error que estás viendo.

    Además, si estás utilizando este código para cargar NFT en un mercado, es posible que necesites realizar otros cambios para asegurarte de que los NFT estén correctamente formateados e incluyan todos los metadatos necesarios. Debes consultar la documentación del mercado para obtener instrucciones específicas sobre cómo cargar NFT en su plataforma.

Comments are closed.