Cloudflare abre el acceso a un nuevo registro de módulos para Workers. Antes de deducir que su aplicación Node.js puede migrar sin adaptación, hay que identificar lo que transforma el bundler, lo que resuelve el motor y qué comportamientos exigen realmente sus dependencias.
Qué cambia el nuevo registro
Cloudflare anunció el 9 de septiembre de 2026 un registro de módulos de Workers reconstruido, accesible con el indicador de configuración explícito new_module_registry. La publicación describe en particular import.meta.url, import.meta.main, import.meta.resolve(), los especificadores URL, require(esm) y la compilación diferida; la implementación anterior sigue disponible. Estas capacidades son las anunciadas por Cloudflare, no una prueba de compatibilidad general con Node.js. [fuente Cloudflare]
El indicador debe añadirse a la lista de compatibilidad existente, sin sustituirla. Una configuración de prueba puede añadir new_module_registry a la lista ya presente; no constituye una orden de despliegue.
{ "compatibility_flags": ["new_module_registry"] }
Este extracto muestra únicamente el indicador que añadir. No reemplaza el archivo de configuración completo ni los indicadores ya presentes.
Separar el bundler del motor de ejecución
El bundler, la herramienta que ensambla los archivos de código, puede eliminar, transformar o agrupar una importación antes de que llegue al motor de ejecución (runtime). Por tanto, una importación visible en el código fuente no demuestra que el registro la resolverá. Inspeccione el artefacto producido y anote el modo de construcción, las versiones y las opciones antes de concluir que hay un cambio de runtime. Esta separación completa nuestro artículo sobre la cadena de construcción.
Construir casos de prueba limitados y observables
Prepare un pequeño ejemplo aislado, o fixture, por mecanismo: URL de módulo con parámetros y fragmento, import.meta.resolve(), importación dinámica, frontera entre módulos JavaScript ESM y CommonJS (dos formatos de carga) y error de carga. La documentación de workerd describe el diseño del registro; para reproducir una prueba, fije la referencia a42a33b0d43d80b9554d3f9d7f04c153d6b0c45f en lugar de utilizar una rama cambiante. [referencia workerd fijada]
Los ejemplos siguientes y sus archivos documentales son una propuesta de prueba; no se han ejecutado en Workers. No proporcionan ningún resultado esperado fabricado. Un fallo debe inspeccionarse: puede proceder de una dependencia, de la construcción, del formato ESM/CommonJS o del entorno, y no solamente del registro.
// url-meta.mjs — exemple documentaire non exécuté dans Workers
export const currentUrl = import.meta.url;
export const isMain = import.meta.main;
export const resolved = import.meta.resolve("./url-meta.mjs?mode=test#fixture");
// Comparer séparément les identités et les erreurs avec chaque registre.
export async function loadVariant() {
return import("./url-meta.mjs?mode=dynamic#fixture");
}
El protocolo debe registrar la URL, el papel de punto de entrada, la identidad de las instancias y la clase de error. Conserve también un caso de módulo ausente y otro de carga CommonJS de un módulo ESM. Una comprobación de sintaxis por sí sola no valida ninguno de estos comportamientos en Workers.
| Dependencia | Mecanismo | Caso probado | Constatación | Incertidumbre | Decisión |
|---|---|---|---|---|---|
| Por completar | Por identificar | No ejecutado | No medido | Por cualificar | Por decidir |
Comparar sin confundir runtime y dependencias
Utilice el mismo artefacto, las mismas dependencias y las mismas entradas en dos configuraciones documentadas: registro anterior y activación de prueba. Conserve registros, aserciones y posibles transformaciones del bundle. Esta comparación no promete ninguna ganancia de velocidad ni una migración automática; simplemente aísla la variable estudiada.
Prepare también el retorno atrás en el entorno de prueba: retire únicamente el indicador añadido, conserve los demás indicadores y anote los criterios que justificarían continuar o detenerse. La compatibilidad de Workers se demuestra por aplicación, dependencia y comportamiento utilizado.