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.


Reply via email to