The "cwd" is a concept that many CLI programs leverage to their advantage, namely npm and node-gyp, which execute their actions aginst the "cwd". That said, it's a powerful tool, and not at all a "problem", as stated pretty well in this thread already.
There won't be any warning being added to node for using process.cwd() or invoking node with a dir path on the filename. On Mon, Aug 26, 2013 at 3:08 PM, mks <[email protected]> wrote: > The point is that cwd is not problematic at all. > Think of a command line program that you want to do something with your > current working directory: > > $ /usr/local/bin/myls > $ cd ~ > $ myls > > > On Monday, August 26, 2013 6:10:07 PM UTC+2, Gagle 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? 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 >>>> [email protected] >>>> 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 [email protected]. >>>> 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.
