Aquí está la situación ... Así que he creado un módulo Node.js que actúa como interfaz para algunos motores de plantilla Node.js, Shift.js. Eso está incluido dentro de otro módulo Node.js, Design.io (se especifica el paquete package.json dependencies
de Design.io). Design.io mira los archivos para ver los cambios."Error: no se puede encontrar el módulo 'menos'" Node.js módulo cargar preferencia/orden/caché?
Luego compila una aplicación y require('design.io')
. También instala, digamos, Less y Stylus en su proyecto.
De esta manera, cuando se guarda un archivo o .less
.styl
, una cadena de métodos son llamados:
require("design.io")
recibe una notificación del evento de sistema de archivos. Design.io luego llama alrequire('shift').render(string, extension, callback)
. Shift.js luego llama alrequire(moduleFor(extension)) # require("less")
. La cadena está compilada.
En mi aplicación (directorio de trabajo actual) que han instalado menos y lápiz:
npm install less stylus
El problema que estoy teniendo es, en el paso 3 que se llama desde dentro de las Shift.js módulo, obtengo errores como este:
Error: Cannot find module 'less'
at Function._resolveFilename (module.js:334:11)
at Function._load (module.js:279:25)
at Module.require (module.js:357:17)
at require (module.js:368:17)
at Less.engine (/Users/viatropos/Documents/git/plugins/design.io/node_modules/shift/lib/shift/less.js:6:14)
at Less.render (/Users/viatropos/Documents/git/plugins/design.io/node_modules/shift/lib/shift/less.js:18:21)
at /Users/viatropos/Documents/git/plugins/design.io/node_modules/shift/lib/shift.js:69:23
at /Users/viatropos/Documents/git/plugins/design.io/node_modules/async/lib/async.js:118:13
at Object.forEachSeries (/Users/viatropos/Documents/git/plugins/design.io/node_modules/async/lib/async.js:134:9)
at Object.render (/Users/viatropos/Documents/git/plugins/design.io/node_modules/shift/lib/shift.js:78:31)
Mi pregunta es, ¿por qué sucede esto? Pensé que podría necesitar dinámicamente bibliotecas de un módulo, siempre que se instalaran en algún lugar ... ¿Qué me falta?
El objetivo sería que las bibliotecas como Shift.js no tuvieran que definir cada dependencia en package.json
... Para una biblioteca de "interfaz para los motores de plantillas", eso requeriría demasiadas dependencias que la aplicación probablemente nunca sería utilizando.
Gracias por la ayuda, espero que sea algo claro.
Creo que esto podría ser una solución ... Tengo un comando 'design.io' que llamo, que se desarrolló' require ('../ lib/design.io/process.js') 'que inicia todo el proceso del observador.Si cambio eso a 'require ('design.io/lib/design.io/process.js')', todo parece cargarse correctamente. Raro, b/c 'require.main.paths' son los mismos en ambos casos. –