2011-02-27 9 views

Respuesta

4

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.

+2

que requerirá una secuencia de comandos externa adicional para ejecutar la aplicación que es algo sucio. –

+1

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

+2

@leebriggs ¿Puedes explicar un poco tu último comentario, por favor? –

1

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.

+0

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

+1

¿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

+0

@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

1

echar un vistazo a https://github.com/patrick-steele-idem/app-module-path-node; se puede añadir un directorio para las declaraciones requireen el nivel superior, sin influir en los caminos de la sub-módulos.

+0

He estado usando este módulo por un tiempo. Funciona realmente bien. – vaughan

+0

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. –

Cuestiones relacionadas