bajo norte
Al intentar trabajar con node/javascript/nfts, soy un novato y seguí un tutorial, pero aparece este error:
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
Tengo entendido que han actualizado el archivo de nodo, 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 se tan especifico 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));
})
es debido a la node-fetch
paquete. Como las versiones recientes de este paquete solo son compatibles con ESM, debe cambiarlo a una versión anterior. node-fetch@2.6.1
o bajo.
npm i node-fetch@2.6.1
Esto debería resolver el problema.
-
¿Cómo sabes que este fue el error? Me estoy volviendo loco desde la última hora.
– jeea
8 jun a las 15:19
-
esta en la documentacion: npmjs.com/package/node-fetch#user-content-commonjsCommonJS node-fetch de v3 es un módulo exclusivo de ESM: no puede importarlo con require(). Si no puede cambiar a ESM, utilice v2, que sigue siendo compatible con CommonJS. Se seguirán publicando correcciones de errores críticos para v2.
npm install node-fetch@2
– PhilWilliammee
31 oct a las 19:09
-
Las instrucciones de @PhilWilliammee son el camino a seguir como
2.6.1
tiene una advertencia de auditoría ahora.– Señor Rogers
17 de noviembre a las 22:58
-
2.6.7 también funciona, amigos
– mikeDOTexe
19 de noviembre a las 16:58
Mona Thahmeen
Vaya a su archivo package.json y escriba
"type": "module",
por encima de la depuración.
y en lugar de escribir require('chalk')
en el archivo js cámbielo a import chalk from 'chalk'
-
Esto no puede funcionar mixto ems npm deps y cmj npm deps.
– JackChouMine
8 abr a las 16:54
-
Sí, esto funcionará solo en algunas situaciones, en mi caso agregando
"type": "module"
solucionó este problema pero otras cosas se volvieron incompatibles– n1kk
30 de mayo a las 11:06
Esto puede ocurrir cuando instala la última versión de un paquete que tiene un problema con la importación de módulos.
En mi caso, estaba recibiendo el error después de instalar la última versión de crypto-random-string
paquete. Para saber qué paquete está causando este error, consulte el mensaje que precede al error anterior. En mi caso, se leía así:
error: uncaughtException: require() of ES Module /Users/myname/Documents/mydir/anotherdir/my-project/node_modules/crypto-random-string/index.js
Para solucionarlo, solo bajé a una versión anterior haciendo lo siguiente:
yarn remove crypto-random-string
yarn add crypto-random-string@3.3.1
Tuve este error en common.js en angular-devkit después de actualizar a angular 13. Descubrí que esto se perdió durante la actualización:
ng update no comprueba ni actualiza los paquetes de @angular-devkit
Me deshice de él usando:
ng update @angular-devkit/build-angular
Majid Alí
Agregué la declaración extra, puedes ver esto "type": "module",
declaración, escrita después license
.
"author": "",
"license": "ISC",
"type": "module",
"dependencies": {
"chalk": "^5.0.1"
}
}
Hice npm i node-fetch@2.6.1, parece que lo arregló, luego escribí node utils/nftport/uploadFiles.js en la terminal (no conozco los términos correctos) y decía “el archivo no está definido” es estos problemas conectados? que mal hice
– Bajo Norte
31 de diciembre de 2021 a las 10:33