DEV Community

Cover image for FIX "ReferenceError: __dirname is not defined in ES module scope" in NodeJs.
Stanley
Stanley

Posted on

FIX "ReferenceError: __dirname is not defined in ES module scope" in NodeJs.

'__dirname' is used to get the directory name of the currently executing module's file.
Let's first try to understand why this error is flagged. This error occurs because __dirname is not available as a global variable in ES6 (ECMAScript 2015) module scope. In ES6 modules, the global scope is encapsulated, and certain variables that were available in CommonJS modules (like __dirname and __filename) are not automatically available in ES6 modules. Remember that there are two types of module systems, CommonJS and ES6 module systems.
To Fix this Error, we can use the following alternative method:

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

      const __filename =fileURLToPath(import.meta.url);
      const __dirname = dirname(__filename);
Enter fullscreen mode Exit fullscreen mode

By following this approach, you can access the equivalent of __dirname in ES6 modules without encountering the "ReferenceError".

Top comments (0)