Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

670
Vistas
¿Cómo importar un archivo Javascript que es ESM desde un módulo CommonJS? Trago. Error: [ERR_REQUIRE_ESM]

Mi proyecto está completamente escrito como módulo CommonJS y no planeo cambiarlo . El problema es que tengo que usar una biblioteca que es ESM cuando uso gulp .

El archivo donde aparece esta situación:

 const { dest, src } = require('gulp') const imagemin = require('gulp-imagemin') // This is a ESM. Compiler gives error [ERR_REQUIRE_ESM] const images = () => { // We have specific configs for jpeg and png files to try // to really pull down asset sizes return src('./src/images/**/*') .pipe( imagemin( [ imagemin.mozjpeg({ quality: 60, progressive: true }), imagemin.optipng({ optimizationLevel: 5, interlaced: null }) ], { silent: true } ) ) .pipe(dest('./dist/images')) } module.exports = images

Este es el error que da el nodo

 Error [ERR_REQUIRE_ESM]: require() of ES Module C:\Users\Lucas\Documents\repos\nexus-materiales\node_modules\gulp-imagemin\index.js from C:\Users\Lucas\Documents\repos\nexus-materiales\gulp-tasks\images.js not supported. Instead change the require of index.js in C:\Users\Lucas\Documents\repos\nexus-materiales\gulp-tasks\images.js to a dynamic import() which is available in all CommonJS modules. at Object.<anonymous> (C:\Users\Lucas\Documents\repos\nexus-materiales\gulp-tasks\images.js:2:18) at Object.<anonymous> (C:\Users\Lucas\Documents\repos\nexus-materiales\gulpfile.js:4:16) at async Promise.all (index 0) { code: 'ERR_REQUIRE_ESM' }

Entonces, ¿cómo podría incluir este archivo usando commonJS si es un ESM? es posible?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Para importar un módulo ES desde el código CommonJS, use una importación dinámica .

Las importaciones de módulos ES son asíncronas: deberá asegurarse de que la importación de gulp-imagemin se haya completado antes de crear el flujo de gulp. Esto se puede lograr con gulp.series .

 const { dest, series, src } = require('gulp'); let imagemin; const images = series( async () => { imagemin = await import('gulp-imagemin'); }, () => src('./src/images/**/*') .pipe( imagemin.default( [ imagemin.mozjpeg({ quality: 60, progressive: true }), imagemin.optipng({ optimizationLevel: 5, interlaced: null }) ], { silent: true } ) ) .pipe(dest('./dist/images')) );

Tenga en cuenta que utilicé imagemin.default para acceder a la exportación predeterminada de gulp-imagemin, ya que se importa dinámicamente.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda