How do I get the path to the current script with Node.js?

How would I get the path to the script in Node.js?

I know there's process.cwd, but that only refers to the directory where the script was called, not of the script itself. For instance, say I'm in /home/kyle/ and I run the following command:

node /home/kyle/some/dir/file.js

If I call process.cwd(), I get /home/kyle/, not /home/kyle/some/dir/. Is there a way to get that directory?

How to get the current folder in Node, Using __dirname in a Node script will return the path of the folder where the current JavaScript file resides. Using ./ will give you the current  How do I get the path to the current script with Node.js? How would I get the path to the script in Node.js? I know there's process.cwd , but that only refers to the directory where the script was called, not of the script itself.

So basically you can do this:

fs.readFile(path.resolve(__dirname, 'settings.json'), 'UTF-8', callback);

Use resolve() instead of concatenating with '/' or '\' else you will run into cross-platform issues.

Note: __dirname is the local path of the module or included script. If you are writing a plugin which needs to know the path of the main script it is:

require.main.filename

or, to just get the folder name:

require('path').dirname(require.main.filename)

How to get the path of current script using Node.js ?, We can get the path of the present script in node. js by using __dirname and __filename module scope variables. __dirname: It returns the directory name of the current module in which the current script is located. __filename: It returns the file name of the current module. Then to get the path to the current ES module one has to use: 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);

This command returns the current directory:

var currentPath = process.cwd();

For example, to use the path to read the file:

var fs = require('fs');
fs.readFile(process.cwd() + "\\text.txt", function(err, data)
{
    if(err)
        console.log(err)
    else
        console.log(data.toString());
});

Get the Path of the Current Working Directory in NodeJS, How do I get the current working directory in node JS? Using __dirname in a Node script will return the path of the folder where the current JavaScript file resides. Using ./ will give you the current working directory. It will return the same result as calling process.cwd (). Initially the current working directory is the path of the folder where you ran the node command,

Use __dirname!!

__dirname

The directory name of the current module. This the same as the path.dirname() of the __filename.

Example: running node example.js from /Users/mjr

console.log(__dirname);
// Prints: /Users/mjr
console.log(path.dirname(__filename));
// Prints: /Users/mjr

https://nodejs.org/api/modules.html#modules_dirname

For ESModules you would want to use: import.meta.url

Introduction to Node.js, How do I navigate to a folder in node JS? Add scripts-prepend-node-path=true into .npmrc file in Node.js Application Root folder. Go to Domains > example.com > Node.js. Click 'open' next to Application Root. Using File Manager add scripts-prepend-node-path=true into .npmrc file. Create the file if it does not exist.

When it comes to the main script it's as simple as:

process.argv[1]

From the Node.js documentation:

process.argv

An array containing the command line arguments. The first element will be 'node', the second element will be the path to the JavaScript file. The next elements will be any additional command line arguments.

If you need to know the path of a module file then use __filename.

Difference between __dirname and ./ in Node.js, then you simply write in console D: to change drive from c to d. Initiate the Node.js File. The file you have just created must be initiated by Node.js before any action can take place. Start your command line interface, write node myfirst.js and hit enter:

Node.js, are used to get the filename and directory name of the currently executing file. The ./ gives the current working directory. It works similar to process. Get working directory name and file name in Node. Node provides two variables named “__dirname” and “__filename” who returns the directory path of the currently executing file and the exact location of the file respectively. Both of them return string. To know in depth go through the following.

Node get path of current script, The first method to get the path of the current directory is the __dirname method. This is a Node. js core module that gets the current path of whatever directory the JavaScript file or module is running in. And you can also get the same result by using the path. Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

Node.js File Paths, Using __dirname in a Node script will return the path of the folder where the current JavaScript file resides. js does. __filename is the file name  sys.path[0] is the directory that your calling script is in (the first place it looks for modules to be used by that script). We can take the name of the file itself off the end of sys.argv[0] (which is what I did with os.path.basename). os.path.join just sticks them together in a cross-platform way.

Comments
  • nodejs.org/docs/latest/api/globals.html the documentation link of the accepted answer.
  • If you want only the directory name and not the full path, you might do something like this: function getCurrentDirectoryName() { var fullPath = __dirname; var path = fullPath.split('/'); var cwd = path[path.length-1]; return cwd; }
  • @AnthonyMartin __dirname.split("/").pop()
  • For those trying @apx solution (like I did:), this solution does not work on Windows.
  • Or simply __dirname.split(path.sep).pop()
  • Or require('path').basename(__dirname);
  • If your goal is just to parse and interact with the json file, you can often do this more easily via var settings = require('./settings.json'). Of course, it's synchronous fs IO, so don't do it at run-time, but at startup time it's fine, and once it's loaded, it'll be cached.
  • @Marc Thanks! For a while now I was hacking my way around the fact that __dirname is local to each module. I have a nested structure in my library and need to know in several places the root of my app. Glad I know how to do this now :D
  • Node V8: path.dirname(process.mainModule.filename)
  • If you don't consider windows to be a real platform, can we skip resolve? BSD, Macos, linux, tizen, symbian, Solaris, android, flutter, webos all use / right?
  • This no longer works with ES modules.
  • For those who didn't understand Asynchronous and Synchronous, see this link... stackoverflow.com/a/748235/5287072
  • this is exactly what the OP doesn't want... the request is for the path of the executable script!