node create compose node.js npm

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:

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

  2. Si el módulo dado no es un módulo central (por ejemplo, http , fs , etc.), Node.js comenzará a buscar un directorio llamado node_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 ejemplo

  3. Si 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 para node_modules y utils de las siguientes maneras:

    ./node_modules/utils.js ./node_modules/utils/index.js ./node_modules/utils/package.json

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