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_modulesyutilsde las siguientes maneras:./node_modules/utils.js ./node_modules/utils/index.js ./node_modules/utils/package.jsonSi 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_PATHconfigurado 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 ...