How To Fix ReferenceError: __dirname is not defined

How To Fix ReferenceError: __dirname is not defined


I recently tried to use __dirname inside a ES module. It turns out, that I cannot. It throws an error. So let us see how To Fix ReferenceError: __dirname is not defined.

For people who do not know what it is, let us first discuss what __dirname is.

__dirname is a global variable in Node.js that can be used to reference the directory name of the current module.

We can use import.meta.url and fileURLToPath to get the name of the directory in ES modules.

import { fileURLToPath } from 'url';
import { dirname } from 'path';

const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

We are importing the dirname function from the Node.js path module. import.meta is a property that can be used to access context-specific metadata of an ES module.

import.meta.url gives us the URL of the current module (including query parameters and/or hash if they exist). Using the combination of these properties, we are able to replicate __dirname functionality in an ES module and able to fix the “__dirname is not defined in ES module scope” error.

Would love your thoughts, please comment.x