You can also try to make use of module.parent.require() function and module.parent.parent.(...).parent.require() to get dependencies using context of modules that required current module.
On Tuesday, July 9, 2013 7:58:47 AM UTC+4, j...@team9.com.au wrote: > > Thanks for the suggestions guys, I'm going with a similar approach to > Floby's suggection and making it possible to provide mongoose to mymodule > for development (whereas in production it will inherit from the parent > project). > > On Wednesday, July 3, 2013 1:29:51 PM UTC+10, j...@team9.com.au wrote: >> >> I am developing a module which requires access to the same cached version >> of a module (mongoose) that my main application uses. >> >> As explained by the docs, here: >> http://nodejs.org/api/modules.html#modules_addenda_package_manager_tips >> >> *...Node looks up the realpath of any modules it loads (that is, >> resolves symlinks), and then looks for their dependencies in the >> node_modules folders as described above...* >> >> In this case I have a directory structure: >> >> ~/projects/mymodule <- exposed using npm link >> >> ~/projects/app/web.js >> ~/projects/app/node_modules/mongoose >> ~/projects/app/node_modules/mymodule <- points to ~/projects/mymodule >> thanks to npm link mymodule >> >> In *~/projects/app/web.js:* >> >> var mongoose = require('mongoose'), mymodule = require('mymodule'); >> // followed by configuration of the mongoose instance >> >> In *~/projects/mymodule/index.js:* >> >> var mongoose = require('mongoose'); >> // needs to be the same instance of mongoose configured >> by ~/projects/app/web.js >> >> >> Because require() looks up the realpath of mymodule, it never finds the >> mongoose module installed in app. >> >> This is different from how it will behave in real-world usage (when >> mymodule is installed via npm). >> >> I understand this is a bit of a special case, in that I explicitly want >> the same version of a module in use by the main app, and never a specific >> one. I have not specified mongoose as a dependency of mymodule, and >> leave the author to ensure a valid, compatible version is required by the >> author of the app using mymodule. >> >> If there is a way to fix this (or a better structure), please let me >> know. To achieve what I am trying to do, it is crucial that the same >> instance of mongoose is shared between mymodule and the app. >> >> Thanks, >> Jed. >> >> -- -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to nodejs@googlegroups.com To unsubscribe from this group, send email to nodejs+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to nodejs+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.