Tengo un paquete npm que funciona tanto en Angular como en Node.js. Últimamente, comencé a usar mi paquete con proyectos Angular v12. Estoy recibiendo errores como:
CAMBIO IMPORTANTE: webpack < 5 solía incluir polyfills para los módulos principales de node.js de forma predeterminada. Este ya no es el caso. Verifique si necesita este módulo y configure un polyfill para él.
Necesito esos paquetes (p. ej., 'ruta') y no puedo cambiar a la alternativa de Webpack (p. ej., 'path-browserify') ya que necesito que esto funcione en nodejs.
El error dice:
Si desea incluir un polyfill, debe: - agregar un recurso alternativo 'resolve.fallback: { "ruta": require.resolve("ruta-navegador") }' - instalar 'ruta-navegador'
Instalar 'path-browserify' es fácil. Sin embargo, el error no indica dónde agregar el respaldo. Encontré en algunas publicaciones que sugieren que necesito agregarlo a Webpack.config.js. Pero en el proyecto Angular, no existe tal archivo; agregarlo no tuvo ningún efecto. E incluso si hubiera un archivo de este tipo, no me ayudaría porque soy un paquete npm y no puedo cambiar archivos en la aplicación que me usa.
Puedo escribir una solución para el paquete 'ruta'. Sin embargo, otros paquetes generaron ese error. Algunos de los paquetes (por ejemplo, suppertest) no están destinados a funcionar desde el paquete web, y no los uso cuando se ejecutan en angular, pero como están en mi código, el paquete web aún genera este error. También estoy usando otros paquetes que usan paquetes problemáticos como 'ruta' o 'flujo', y no puedo cambiarlos. ¿Cómo se puede solucionar este problema?
Como indica el error, debe agregar resolve.fallback: { "path": require.resolve("path-browserify") } en el archivo de configuración de su paquete web.
// webpack.config.js module.export = { ... resolve: { fallback: { path: require.resolve("path-browserify") } } ... }