Warns if the process has been started with the wrong cwd
rwd means real working directory.
Global modules don't need the
Did you know why the people prefix
__dirname before a path?
var fs = require "fs";fsexistsSync __dirname + "/file";
It's because the
process.cwd() function returns the shell's current working directory instead of the directory where lives the main script of your application.
Look at this example:
$ pwd/home/user1$ mkdir dir$ cat > dir/app.jsconsole.log (process.cwd ());$ node dir/app.js/home/user1
You probably expect the path
/home/user1/dir. If you execute the main script with a relative path like the above example, very bad things could happen and nearly impossible to detect why your code is not working as expected.
The following example illustrates a very ingenuous script, but depending on how you execute it very dangerous things will happen:
//app.jsvar fs = require "fs";if fsexistsSync "settings.json"doSomethingUseful ;else//Warning!!saveToDatabaseDefaultSettings ;
# Warning!! "settings.json" doesn't exist in ".".node app/app.js
In order to fix this issue simply require the
rwd module. I recommend to put the require in the very first line of your main script:
npm install rwd
Simply requiring the module the cwd will be fixed but you can also get at any time the relative path between the cwd and the rwd.
var rel = require "rwd";
On global installed modules it returns null.