Reciente node docs dicen que modificar require.paths
es una mala práctica. ¿Qué debería hacer?nodejs: ¿qué usar en lugar de require.paths?
Respuesta
que pensamos que el problema es que puede ser modificado en varias ocasiones en tiempo de ejecución, en lugar de establecer. Eso, obviamente, puede ser confuso y causa algunos errores bastante extraños. Además, si los paquetes individuales modifican la ruta, los resultados se aplican globalmente, lo que es realmente malo y va en contra de la naturaleza modular del nodo.
Si tiene varias rutas de bibliotecas de su cuenta, la mejor solución es establecer la variable de entorno NODE_PATH antes de lanzar nodo. Nodo luego recoge esto cuando se lanzó y lo aplica de forma automática.
guardo los modelos relacionados en el mismo directorio o un directorio secundario y la carga usando:
var x = require('./mod/x');
En caso se trata de un módulo externo, lo instalo el uso de NPM que pone el módulo correctamente en NODE_PATH.
nunca he cambiado require.paths.
Para mi caso de uso, quiero mantener copias locales de específico (posiblemente) parcheado versiones de las dependencias en un 'deps /' carpeta local. Tal vez modificar NODE_PATH sería la manera correcta de hacerlo, pero eso significa escribir un script de iniciador ... – nornagon
¿No puede requerir un módulo usando una ruta relativa como var x = require ('../ deps/c'); ? Nunca hice eso, pero vi en alguna parte. – Carlosedp
@nornagon Sé que esto es antiguo, pero he encontrado que la mejor solución es agregar enlaces simbólicos a 'node_modules' apuntando a cada módulo en el directorio' deps/'. Entonces puede hacer referencia a ellos como si fueran módulos normales. Asegúrese de actualizar su '.gitignore' para cada enlace simbólico' node_modules' que añada, de modo que los enlaces simbólicos estén marcados en el control de código fuente. Es hacky, pero funciona. – vaughan
echar un vistazo a https://github.com/patrick-steele-idem/app-module-path-node; se puede añadir un directorio para las declaraciones require
en el nivel superior, sin influir en los caminos de la sub-módulos.
He estado usando este módulo por un tiempo. Funciona realmente bien. – vaughan
Si solo necesita hacer un hack rápido, simplemente puede ajustar require ('module'). Module._nodeModulePaths en otra función. Sin embargo, recuerde que cambiar la ruta del módulo de esta manera sigue siendo una mala práctica. –
- 1. ¿Qué podemos usar en lugar de nstimer?
- 2. ¿Qué puedo usar en lugar de eval()?
- 3. ¿Qué debo usar en lugar de sscanf?
- 4. Cómo usar sugar.js en nodejs?
- 5. Error: require.paths se elimina. Uso node_modules carpetas o la variable de entorno NODE_PATH lugar
- 6. Desventajas del uso de NodeJS en lugar de PHP
- 7. ¿Qué proporciona (NodeJS) Express con solo usar Connect?
- 8. por qué usar - en lugar de _ en la url
- 9. ¿Qué puedo usar en lugar de un Vector en Java?
- 10. ¿Qué debo usar en lugar de windows.h en Linux?
- 11. ¿Qué debo usar en lugar de printf en Perl?
- 12. ¿Por qué usar boost :: ice_or en lugar de || y boost :: ice_and en lugar de && en enable_if?
- 13. ¿Por qué usar string :: iterator en lugar de index?
- 14. ¿Qué usar en lugar de FileReader para Safari?
- 15. ¿Por qué debería usar git en lugar de svn?
- 16. Por qué/cuándo usar (!! p) en lugar de (p! = NULO)
- 17. Qué usar en lugar de Google Transliterate API
- 18. ¿Por qué usar tuplas en lugar de objetos?
- 19. ¿por qué debería usar content_tag en lugar de html "normal"?
- 20. ¿Por qué usar curl en lugar de otros métodos?
- 21. ¿Qué idioma puedo usar en lugar de Turbo Pascal?
- 22. ¿Por qué debería usar var en lugar de un tipo?
- 23. ¿Por qué usar Apio en lugar de RabbitMQ?
- 24. ¿Por qué debería usar url.openStream en lugar de url.getContent?
- 25. ¿Por qué usar System.Threading.Interlocked.Decrement en lugar de menos?
- 26. ¿Por qué usar C typedefs en lugar de #defines?
- 27. ¿Por qué usar Enums en lugar de Constants?
- 28. ¿Por qué usar ROLAP en lugar de simplemente MySQL?
- 29. ¿Por qué usar char [] en lugar de String?
- 30. ¿Por qué usar var en lugar del nombre de clase?
que requerirá una secuencia de comandos externa adicional para ejecutar la aplicación que es algo sucio. –
Por si acaso alguien todavía se topa con esta respuesta, el asunto ahora es un poco académico dado cómo node & npm ha evolucionado hacia un desarrollo de espacio aislado. – leebriggs
@leebriggs ¿Puedes explicar un poco tu último comentario, por favor? –