Recibo tres mensajes de advertencia al importar request
en un proyecto de paquete web básico. Un ejemplo mínimo para reproducir el error está disponible en GitHub (ejecutar npm install
y npm start
).
Critical dependency: the request of a dependency is an expression
¿Cómo puedo deshacerme de esta advertencia?
Más información:
Webpack intenta resolver las require
llamadas de forma estática para hacer un paquete mínimo. Cuando una biblioteca usa variables o expresiones en una llamada require (como require('' + 'nodent')
en estas líneas de ajv
), Webpack no puede resolverlas estáticamente e importa el paquete completo.
Mi razón fundamental es que esta importación dinámica no es deseable en la producción, y es mejor mantener el código libre de advertencias. Eso significa que quiero cualquier solución que resuelva el problema. P.ej:
- Configure manualmente el paquete web para importar las bibliotecas necesarias y evitar que se produzcan las advertencias.
- Agregar un
hack.js
archivo a mi proyecto que anula las llamadas requeridas de alguna manera. - Actualizando mis bibliotecas.
ajv-5.0.1-beta.3
tiene una solución que silencia las advertencias. Sin embargo, si quiero usarlo, tengo que esperar hasta que se libera, y entonces hastahar-validator
yrequest
lanzar actualizaciones posteriores. Si hay una forma de forzar elhar-validator
uso de la versión beta deajv
, eso resolvería mi problema. - Otro
new webpack.IgnorePlugin(/async/, /ajv/)
, dos de cada tres advertencias desaparecen, pero webpackCannot find module "../async"
. ¿Alguna idea sobre el valor mágico adecuado para que funcione?Respuestas:
Resuelto con
npm install [email protected] --save
Según los autores de
ajv
, es probable que el problema se resuelva en la última versión derequest
dentro de unas semanas.fuente
npm remove request
reinstalar, luegopackage.json
elimine el^
antes del número de versión. Si abandona el^
, es posible que el paquete se actualice después de quenpm update
vuelva a aparecer la advertencia.Reemplazar esto
con este-
fuente
System.Import
función dónde encontrar el código fuente en lanode_modules
carpeta. La ruta cambia según la versión angular que esté utilizando. Debería ser manejado mejor por el equipo de Angular, con suerte ya lo ha sido.Esta advertencia se puede vincular a las inyecciones de paquetes en (dependencias o devDependencies).
Si el problema aparece de repente, verifique la última modificación en su package.json.
Considere la posibilidad de eliminar package-lock.json si planea reiniciar un archivo
npm install
.fuente