How to get filename of script being executed in NodeJS?

How to get filename of script being executed in NodeJS application?


Solution 1:

You can use variable __filename

http://nodejs.org/docs/latest/api/globals.html#globals_filename

Solution 2:

Use the basename method of the path module:

var path = require('path');
var filename = path.basename(__filename);
console.log(filename);

Here is the documentation the above example is taken from.

As Dan pointed out, Node is working on ECMAScript modules with the "--experimental-modules" flag. Node 12 still supports __dirname and __filename as above.


If you are using the --experimental-modules flag, there is an alternative approach.

The alternative is to get the path to the current ES module:

const __filename = new URL(import.meta.url).pathname;

And for the directory containing the current module:

import path from 'path';

const __dirname = path.dirname(new URL(import.meta.url).pathname);

Solution 3:

You need to use process.argv. In there will be the name of the script that was executed from the command line, which can be different than what you will find in __filename. Which is appropriate depends on your needs.

http://nodejs.org/docs/latest/api/process.html#process_process_argv