Estoy desarrollando una API express, donde las rutas se instalan como una dependencia del proyecto principal. Dentro del proyecto principal tengo una carpeta de configuración con index.js. index.js está exportando un objeto que sirve como configuración de ruta.
Dentro del proyecto principal, puedo ingresar a este objeto exportado desde todos los archivos; sin embargo, cuando trato de solicitar este objeto de configuración dentro de la dependencia de node_modules, regresa como indefinido. He intentado con nombres de ruta relativos y absolutos en la declaración requerida y ninguno parece recuperar el objeto js.
usando commonJs. Confirmé que estoy usando module.exports y requiero declaraciones en el extremo receptor. Probé la instrucción require de app.js e incluí una declaración module.exports allí también. Sin suerte.
¿Hay alguna forma mágica de exportar objetos del proyecto principal a los paquetes de dependencia? Me pregunto si hay algo simple que me estoy perdiendo.
Structure: -app.js (main) -package.json --routes (folder) | index.js ('imports' route express modules from node_modules) --config (folder) | index.js (where module.exports.objectname = {stuff:stuff} exists) --node_modules | packagefolder (project scope) | packagename (route scope) | functions (folder) bunchofjs files to complete i/o of requests routes (folder) index.js (package.json main. Handles require from ../../..) config (folder) index.js (where the config require statement is.)Declaración de muestra de la aplicación principal en config/index.js:
const globalConfig = { port : 4443, otherinfo: "stuff" } module.exports.globalConfig = globalConfigEjemplo de código desde dentro de node_modules/packagefolder/packagename/routes/index.js
const port = require('../../../../../config').globalConfig.portEjemplo de error:
TypeError: Cannot read properties of undefinedEl símbolo de la zanahoria (^) está en el punto entre globalConfig y port.
Respuesta atribuida de @bigless en comentarios. Tener paquetes de dependencia fuera de la carpeta node_modules se consideraría un riesgo de seguridad y está bloqueado por diseño. La estrategia de la aplicación que usa configuraciones debe rediseñarse para tener esto en cuenta.