Determining your app's base directory in Node.js
•
1 min read
Determining your app's base dir (or document root if you're from a PHP background) isn't as straight forward as you'd think in Node. Here's a little trick to get a globally available reference to your app's root directory.
Add this somewhere towards the start of your main app file (e.g. app.js
):
global.__basedir = __dirname;
This sets a global variable that will always be equivalent to your app's base dir. Use it just like any other variable:
const yourModule = require(__basedir + '/path/to/module.js');
I know what you're thinking: oh no a global! 😫
And I would normally agree, but I think this technique is a fair exception if you're developing an app. Here's why:
- There really isn't a consistent way to references the base dir without it.
- It's a fair requirement to set if you're worried about reusing modules.
- It's a lot easier and more stable than using
../../../file.js
all the time. - It shares the same naming convention as
__dirname
and__filename
.
There are, of course, other techniques that may or may not be more appropriate depending on your app. However, in my opinion, this approach is the most elegant.