node.js - create - node js docker
Cambiar la ubicaciĆ³n de node_modules (2)
¿Hay alguna manera de cambiar la ubicación de la carpeta node_modules?
Por ejemplo:
- dir1
- dir2
- node_modules
a:
- dir1
- dir2
- node_modules
De hecho, incluso podemos editar el archivo nodevars.bat
en el que está la última línea:
if "%CD%/"=="%~dp0" cd /d "%HOMEDRIVE%%HOMEPATH%"
Podemos especificar nuestro propio directorio en lugar de cuidar el directorio principal del usuario:
%HOMEDRIVE%%HOMEPATH%
para que node-modules-location se atienda automáticamente.
El siguiente es el código que se ve en la carpeta node_modules
por defecto
Module.prototype.load = function(filename) {
debug(''load '' + JSON.stringify(filename) +
'' for module '' + JSON.stringify(this.id));
assert(!this.loaded);
this.filename = filename;
this.paths = Module._nodeModulePaths(path.dirname(filename));
var extension = path.extname(filename) || ''.js'';
if (!Module._extensions[extension]) extension = ''.js'';
Module._extensions[extension](this, filename);
this.loaded = true;
};
Entonces, el siguiente es el patrón de búsqueda exacto:
Node.JS busca ver si el módulo dado es un módulo central. (por ejemplo,
http
,fs
, etc.) Siempre tiene prioridad en los módulos de carga.Si el módulo dado no es un módulo central (por ejemplo,
http
,fs
, etc.), Node.js comenzará a buscar un directorio llamadonode_modules
.Comenzará en el directorio actual (relativo al archivo que se está ejecutando actualmente en Node.JS ) y luego se abrirá camino hasta la jerarquía de carpetas, verificando cada nivel para una carpeta node_modules. Una vez que Node.JS encuentra la carpeta
node_modules
, intentará cargar el módulo dado como un archivo JavaScript (.js) o como un subdirectorio con nombre; si encuentra el subdirectorio con nombre, intentará cargar el archivo de varias maneras. Así por ejemploSi realiza una solicitud para cargar el módulo, "utils" y es un directorio, no un archivo .js, entonces:
Node.JS buscará un directorio jerárquico paranode_modules
yutils
de las siguientes maneras:./node_modules/utils.js ./node_modules/utils/index.js ./node_modules/utils/package.json
Si Node.JS todavía no puede encontrar el archivo en los pasos anteriores, Node.js comenzará a buscar en las rutas del directorio desde las variables de entorno, es decir,
NODE_PATH
configurado en su máquina (obviamente establecido por el archivo instalador Node.JS si está en Windows) ) No se encuentra en todos los pasos anteriores, imprime un seguimiento de la pila para stder
Ejemplo :Error:
Cannot find module ''yourfile''
Para más información: el enlace está here incluso el cíclico require () se explica muy bien ...