Webpack v5 tiene soporte incorporado para trabajadores web , inicializado en el siguiente formato:
const worker = new Worker(new URL("./worker.js", import.meta.url));Mientras trabajaba en un proyecto Next.js (con webpack v5), noté que una ligera variación de lo anterior se descompone:
const url = new URL("./worker.js", import.meta.url); const worker = new Worker(url);Esto conduce al siguiente error en la consola del navegador:
SyntaxError: import declarations may only appear at top level of a modulelo que ocurre porque (y solo cuando) estoy importando algo en el archivo del trabajador.
Aquí hay una reproducción mínima de lo anterior. Las instrucciones para ejecutar y las líneas para mirar están en el LÉAME.
¿Por qué pasó esto? ¿Cómo cambia las cosas la definición de la URL del trabajador en una variable separada?
EDITAR: este comentario sobre una de las discusiones sobre el repositorio de GitHub de webpack sugiere la posible causa: que el constructor de URL es manejado por un cargador de paquete web diferente. Aunque no lo entiendo muy claramente.