On Mon, Aug 26, 2013 at 9:10 AM, Gagle <[email protected]> wrote: > If node.js is better at requiring modules than other platforms why not > include a warning when you execute a file with a relative path different > than the directory of this file? >
Because it's not a problem, it's a useful feature, and one that, as you pointed out, is common and well known across many languages and platforms. If the app is coded poorly, makes invalid assumptions about how it's going to be run, and doesn't validate those assumptions on startup, then that's the app's / author's problem. On the flip side, someone running multiple instances of their app from different working directories, specifically to pick up different configs from those directories, shouldn't be faced with a slew of warnings when their app is working as designed. -- Martin Cooper > The "process.root" solution is already implemented: > > process.root = path.dirname(process.mainModule.filename) > > We could say: "Hey! Node.js is aware the cwd problematic! Awesome" > > El lunes, 26 de agosto de 2013 17:05:16 UTC+2, Tim Caswell escribió: >> >> Node's require is always relative to the file that calls require. In >> fact, the internal implementation of this is done by giving file a unique >> copy of the require function that embeds that file's directory. If you >> wanted to require relative to the cwd, then use process.cwd and >> path.resolve. If you want to require relative to your main module, store a >> value somewhere in your process (process.root maybe?) and use that in >> conjunction with path.resolve. >> >> The fs operations are relative to the process.cwd instead of the calling >> file. If you want them to be relative to the calling file, simply >> path.resolve with __dirname and they will act like require does. >> >> Noce gives you more options in this regard than any other platform I've >> worked with. After working with node's require semantics, it's now painful >> for me to use other module systems because I can't write portable libraries >> as easily. Sometimes it's not even possible to have a set of >> inter-dependencies that only use relative requires. >> >> >> On Mon, Aug 26, 2013 at 8:34 AM, Gagle <[email protected]> wrote: >> >>> But now suppose you have another file called b.js that is required by >>> a.js and is stored in a different directory and uses a relative path. You >>> can't use __dirname. >>> >>> El lunes, 26 de agosto de 2013 15:32:17 UTC+2, ajlopez escribió: >>>> >>>> Ah! I see.. >>>> >>>> But this is not a problem for require, but for fs. >>>> >>>> Ok, in my code I would use >>>> >>>> if (fs.existsSync(path.join(__**dir**name, "settings.json")) >>>> >>>> >>>> On Mon, Aug 26, 2013 at 10:27 AM, Gagle <[email protected]> wrote: >>>> >>>>> $ pwd >>>>> /home/user1 >>>>> $ mkdir dir >>>>> $ cat > dir/app.js >>>>> console.log (process.cwd ()); >>>>> $ node dir/app.js >>>>> /home/user1 >>>>> $ cd dir && node app.js >>>>> /home/user1/dir >>>>> >>>>> Now suppose you have this code: >>>>> >>>>> //app.js >>>>> var fs = require ("fs"); >>>>> if (fs.existsSync ("settings.json")){ >>>>> doSomethingUseful (); >>>>> }else{ >>>>> //Warning!! >>>>> saveToDatabaseDefaultSettings (); >>>>> } >>>>> >>>>> And execute the main file with a relative path: >>>>> >>>>> node dir/app >>>>> >>>>> You will enter into the else case because settings.json is stored >>>>> inside dir but the cwd is not dir, so you expect the path >>>>> ./dir/settings.json but in fact the path is ./settings.json. >>>>> >>>>> El lunes, 26 de agosto de 2013 15:05:10 UTC+2, ajlopez escribió: >>>>>> >>>>>> Gagle, can you write down a concrete use case? >>>>>> >>>>>> >>>>>> On Mon, Aug 26, 2013 at 9:59 AM, Gagle <[email protected]> wrote: >>>>>> >>>>>>> Because it's local to the file, it doesn't work anywhere. >>>>>>> >>>>>>> El lunes, 26 de agosto de 2013 14:46:55 UTC+2, mks escribió: >>>>>>> >>>>>>>> __dirname is local to any file. It works everywhere. >>>>>>>> >>>>>>> -- >>>>>>> -- >>>>>>> Job Board: http://jobs.nodejs.org/ >>>>>>> Posting guidelines: https://github.com/joyent/**node**** >>>>>>> /wiki/Mailing-List-**Posting-**Gui**delines<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 [email protected] >>>>>>> >>>>>>> To unsubscribe from this group, send email to >>>>>>> nodejs+un...@**googlegroups.com >>>>>>> >>>>>>> For more options, visit this group at >>>>>>> http://groups.google.com/**group****/nodejs?hl=en?hl=en<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+un...@**googlegroups.com. >>>>>>> >>>>>>> For more options, visit https://groups.google.com/**grou**** >>>>>>> ps/opt_out <https://groups.google.com/groups/opt_out>. >>>>>>> >>>>>> >>>>>> -- >>>>> -- >>>>> Job Board: http://jobs.nodejs.org/ >>>>> Posting guidelines: https://github.com/joyent/**node** >>>>> /wiki/Mailing-List-**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 [email protected] >>>>> To unsubscribe from this group, send email to >>>>> nodejs+un...@**googlegroups.com >>>>> For more options, visit this group at >>>>> http://groups.google.com/**group**/nodejs?hl=en?hl=en<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+un...@**googlegroups.com. >>>>> For more options, visit >>>>> https://groups.google.com/**grou**ps/opt_out<https://groups.google.com/groups/opt_out> >>>>> . >>>>> >>>> >>>> -- >>> -- >>> Job Board: http://jobs.nodejs.org/ >>> Posting guidelines: https://github.com/joyent/**node/wiki/Mailing-List-* >>> *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 [email protected] >>> To unsubscribe from this group, send email to >>> nodejs+un...@**googlegroups.com >>> For more options, visit this group at >>> http://groups.google.com/**group/nodejs?hl=en?hl=en<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+un...@**googlegroups.com. >>> For more options, visit >>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>> . >>> >> >> -- > -- > 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 [email protected] > To unsubscribe from this group, send email to > [email protected] > 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 [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > -- -- 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 [email protected] To unsubscribe from this group, send email to [email protected] 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 [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
