I am using Node.js 10.0.0 & my index.mjs
looks like:
import path from "path";
console.log(__dirname);
In my terminal, I run
node --experimental-modules index.mjs
And I get the following error:
(node:3750) ExperimentalWarning: The ESM module loader is experimental.
ReferenceError: __dirname is not defined
at file:///MyFolderPath/node-10/index.mjs:3:21
at ModuleJob.run (internal/modules/esm/module_job.js:106:14)
I am using Node.js 10.0.0 & my index.mjs
looks like:
import path from "path";
console.log(__dirname);
In my terminal, I run
node --experimental-modules index.mjs
And I get the following error:
(node:3750) ExperimentalWarning: The ESM module loader is experimental.
ReferenceError: __dirname is not defined
at file:///MyFolderPath/node-10/index.mjs:3:21
at ModuleJob.run (internal/modules/esm/module_job.js:106:14)
Share
Improve this question
edited Mar 28, 2020 at 12:23
Mike
14.6k32 gold badges119 silver badges176 bronze badges
asked May 10, 2018 at 7:49
deadcoder0904deadcoder0904
8,68318 gold badges85 silver badges205 bronze badges
0
2 Answers
Reset to default 11ESM is not node-specific, and node-specific "globals" (such as __dirname
and module) will not work. import.meta
is expected to provide a suitable replacement.
Source: GitHub issue.
ES6 modules don't define __dirname
. You can define it yourself using code like this below. This assumes a filesystem context, not a browser.
import path from 'path';
const __dirname = path.dirname(new URL(import.meta.url).pathname);
See import.meta
in the node reference and MDN for specifics.