Tengo unas credenciales guardadas en un archivo llamado secrets.js , en la misma carpeta del archivo main.js En el archivo secrets.js escribí esto:
const secrets = {} secrets.key = "..." secrets.discord = "..." secrets.cityName = "..." module.exports = secrets En el archivo main.js escribí esto:
const secrets = require('./secrets.js') const fetch = require('node-fetch') async function main(){ console.log(secrets) } main()Si ejecuto el código me sale este error:
internal/modules/cjs/loader.js:1216 throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath); ^ Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: ./weather/node_modules/node-fetch/src/index.js require() of ES modules is not supported. require() of ./weather/node_modules/node-fetch/src/index.js from ./weather/main.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules. Instead rename index.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from ./weather/node_modules/node-fetch/package.json. at Object.Module._extensions..js (internal/modules/cjs/loader.js:1216:13) at Module.load (internal/modules/cjs/loader.js:1049:32) at Function.Module._load (internal/modules/cjs/loader.js:937:14) at Module.require (internal/modules/cjs/loader.js:1089:19) at require (internal/modules/cjs/helpers.js:73:18) at Object.<anonymous> (./weather/main.js:2:15) at Module._compile (internal/modules/cjs/loader.js:1200:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1220:10) at Module.load (internal/modules/cjs/loader.js:1049:32) at Function.Module._load (internal/modules/cjs/loader.js:937:14) { code: 'ERR_REQUIRE_ESM' } Pero si comento esta línea const fetch = require('node-fetch') :
const secrets = require('./secrets.js') //const fetch = require('node-fetch') async function main(){ console.log(secrets) } main()entonces funciona y obtengo el resultado esperado:
{ key: '...', discord: '...', cityName: '...' }Parece que importar node-fetch es la causa del error. Estoy usando la v16.10.0 de node. ¿Alguien me puede ayudar?