Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

634
Visualizações
Error: no se admite require () de módulos ES al importar node-fetch

Estoy creando un programa para analizar las transmisiones de las cámaras de seguridad y me quedé atascado en la primera línea. Por el momento, mi archivo .js no tiene nada más que la importación de node-fetch y me da un mensaje de error. ¿Qué estoy haciendo mal?

Ejecutando Ubuntu 20.04.2 LTS en el subsistema de Windows para Linux.

Versión de nodo:

 user@MYLLYTIN:~/CAMSERVER$ node -v v14.17.6

versión del paquete node-fetch:

 user@MYLLYTIN:~/CAMSERVER$ npm v node-fetch node-fetch@3.0.0 | MIT | deps: 2 | versions: 63 A light-weight module that brings Fetch API to node.js https://github.com/node-fetch/node-fetch keywords: fetch, http, promise, request, curl, wget, xhr, whatwg dist .tarball: https://registry.npmjs.org/node-fetch/-/node-fetch-3.0.0.tgz .shasum: 79da7146a520036f2c5f644e4a26095f17e411ea .integrity: sha512-bKMI+C7/T/SPU1lKnbQbwxptpCrG9ashG+VkytmXCPZyuM9jB6VU+hY0oi4lC8LxTtAeWdckNCTa3nrGsAdA3Q== .unpackedSize: 75.9 kB dependencies: data-uri-to-buffer: ^3.0.1 fetch-blob: ^3.1.2 maintainers: - endless <jimmy@warting.se> - bitinn <bitinn@gmail.com> - timothygu <timothygu99@gmail.com> - akepinski <npm@kepinski.ch> dist-tags: latest: 3.0.0 next: 3.0.0-beta.10 published 3 days ago by endless <jimmy@warting.se>

versión del paquete esm:

 user@MYLLYTIN:~/CAMSERVER$ npm v esm esm@3.2.25 | MIT | deps: none | versions: 140 Tomorrow's ECMAScript modules today! https://github.com/standard-things/esm#readme keywords: commonjs, ecmascript, export, import, modules, node, require dist .tarball: https://registry.npmjs.org/esm/-/esm-3.2.25.tgz .shasum: 342c18c29d56157688ba5ce31f8431fbb795cc10 .integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== .unpackedSize: 308.6 kB maintainers: - jdalton <john.david.dalton@gmail.com> dist-tags: latest: 3.2.25 published over a year ago by jdalton <john.david.dalton@gmail.com>

Contenido del archivo .js (literalmente nada más que la importación):

 user@MYLLYTIN:~/CAMSERVER$ cat server.js import fetch from "node-fetch";

Resultado:

 user@MYLLYTIN:~/CAMSERVER$ node -r esm server.js /home/user/CAMSERVER/node_modules/node-fetch/src/index.js:1 Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /home/user/CAMSERVER/node_modules/node-fetch/src/index.js require() of ES modules is not supported. require() of /home/user/CAMSERVER/node_modules/node-fetch/src/index.js from /home/user/CAMSERVER/server.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 /home/user/CAMSERVER/node_modules/node-fetch/package.json. at Object.Module._extensions..js (internal/modules/cjs/loader.js:1089:13) { code: 'ERR_REQUIRE_ESM' } user@MYLLYTIN:~/CAMSERVER$
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

De la Guía de actualización

node-fetch se convirtió para ser un paquete exclusivo de ESM en la versión 3.0.0-beta.10 . node-fetch es un módulo exclusivo de ESM: no puede importarlo con require.

Alternativamente, puede usar la función de importación asincrónica () de CommonJS para cargar la búsqueda de nodos de forma asíncrona:

 // mod.cjs const fetch = (...args) => import('node-fetch').then(({default: fetch}) => fetch(...args));

o te quedas en v2 como dicen en el README

node-fetch es un módulo exclusivo de ESM: no puede importarlo con require. Le recomendamos que permanezca en v2, que está construido con CommonJS, a menos que use ESM usted mismo. Continuaremos publicando correcciones de errores críticos para él.

EDITAR

Lo vi en el documento, lo usé y el script falla con:

error TS2556: un argumento extendido debe tener un tipo de tupla o pasarse a un parámetro de descanso.

Como estás usando mecanografiado, deberías hacer algo como esto

 import { RequestInfo, RequestInit } from "node-fetch"; const fetch = (url: RequestInfo, init?: RequestInit) => import("node-fetch").then(({ default: fetch }) => fetch(url, init));
over 4 years ago · Santiago Trujillo Relatório

0

node-fetch v3 es solo para ESM: https://github.com/node-fetch/node-fetch#loading-and-configuring-the-module . El módulo esm que está agregando es para agregar compatibilidad con ESM, pero no es necesario ahora que Node 12+ es compatible con ESM de forma nativa; y no funciona con paquetes solo de ESM como node-fetch 3+.

Para solucionar su problema:

  1. Retire el paquete esm .
  2. Agregue "type": "module" a su package.json .

Y eso es. Luego, cuando ejecute node server.js , debería funcionar.

over 4 years ago · Santiago Trujillo Relatório

0

Para solucionar esto, bajé la categoría node-fetch a la última versión 2, que en este momento es 2.6.6. Este es el script que ejecuté:

 yarn add node-fetch@^2.6.6 or npm install node-fetch@^2.6.6

También agregué estas opciones del compilador:

 { "compilerOptions": { "allowJs": true, "outDir": "./dist" }, }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda