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

146
Vistas
HMR con Parcel.js dentro de importaciones dinámicas

Tengo un Parcel.js 2.0 simple configurado con un archivo main.js como punto de partida:

 import('./components/faqs/faqs.js').then(function(Faqs){ Faqs.init() })

Al ejecutar la vigilancia de paquetes, descubrí que los cambios en el archivo main.js HMR son los esperados, pero los cambios en el enlace faqs.js dentro de la función de inicio no lo hacen y requieren una actualización de la página.

Si tomo un enfoque síncrono como:

 import init from'./components/faqs/faqs.js' init()

Luego, HMR funciona según lo previsto, actualizándose con cualquier cambio en faqs.js. ¿Es este un comportamiento esperado del HMR de Parcel?

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

0

Depuré esto y aquí hay una descripción rápida de lo que sucede actualmente en Parcel HMR con este ejemplo:

  1. main.js la primera vez, y dinámicamente importa y carga faqs.js
  2. Realiza un cambio en faqs.js , el paquete envía un mensaje websocket al navegador, informándole que el paquete que comienza con faqs.js debe volver a cargarse. El código del paquete actualizado se descarga y ejecuta, incluida una nueva definición para la función init() . Cualquier efecto secundario global en faqs.js también se volverá a ejecutar. Hasta aquí todo bien.
  3. Sin embargo, probablemente lo que espera es que la devolución de llamada main.js .then realmente ejecuta la función init también se vuelva a ejecutar. Esto no sucede porque la parcela trata los diferentes paquetes dinámicos de forma independiente.

En mi opinión, esto parece un poco tosco de la implementación actual de HMR en Parcel2. Presentaré un error con lo que encontré para que podamos pensar en mejorar esto.

Mientras tanto, sin embargo, puede solucionar el problema usted mismo proporcionando una devolución de llamada a module.hot.accept , que se inyectará por paquete en el modo de desarrollo (consulte la documentación ). Por ejemplo, podría agregar esto a faqs.js :

 // "module.hot" is injected by parcel in development mode. // This check will ensure that this code _only_ runs in this context // (eg it won't affect production) if (module.hot) { // The callback provided to "module.hot.accept" will be run whenever // parcel sends a new version of `faqs.js` to the browser in development. module.hot.accept(() => { // Actually run the new version of your init function. init() }) }
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