Recibo estas advertencias después de ng build (Angular 12):
./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:35289:13-34 - Warning: Critical dependency: the request of a dependency is an expression
./node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:35301:13-100 - Warning: Critical dependency: the request of a dependency is an expression
Estoy usando @angular-builders/custom-webpack para extraer moment.js del paquete inicial.
Si deshabilité @angular-builders/custom-webpack, entonces todo va bien y las advertencias desaparecen.
Además, las advertencias desaparecieron si agrego lo siguiente dentro de custom-webpack.config.js:
new webpack.ContextReplacementPlugin( /\@angular(\\|\/)core(\\|\/)__ivy_ngcc__(\\|\/)fesm2015/, path.join(__dirname, './src'), {} ),Entonces, amablemente, ¿qué causa exactamente estas advertencias? ¿Y hay alguna otra solución para manejarlo sin agregar el complemento a la configuración del paquete web como arriba? Gracias.
Recibí los siguientes comentarios del equipo de desarrollo de Angular:
Esto proviene del código en el SystemJsNgModuleLoader en desuso y normalmente se suprime cuando se usan los constructores CLI , que también usan ContextReplacementPlugin. No creo que haya una alternativa para suprimirlos, aparte de no suprimirlos e ignorar las advertencias.
https://github.com/angular/angular/issues/43092#issuecomment-895848535
Así que terminé usando el código de constructores CLI mencionado como el siguiente dentro de custom-webpack.config.js:
// Always replace the context for the System.import in angular/core to prevent warnings. new ContextReplacementPlugin( /\@angular(\\|\/)core(\\|\/)/, path.join(__dirname, '$_lazy_route_resources'), {} ),Cuando use un ContextReplacementPlugin personalizado en Angular 12, tenga cuidado con esto :
Si en su configuración personalizada especifica un complemento que Angular CLI ya agregó, las dos instancias se fusionarán de manera predeterminada.
Uso ContextReplacementPlugin para excluir locales de moment.js . Después de actualizar a Angular 12, se eliminaron todas las configuraciones regionales porque su configuración se fusionó con $_lazy_route_resources . Lo resolví configurando replaceDuplicatePlugins en true .