'__dirname is not defined in Node 14 version
I have been using Node version 12.3.4
updated it to 14.14.0 and started to receive a lot of issues which I fixed. The only thing that I don't understand is the issue
__dirname is not defined
__dirname
is a core variable in Node as I know, Is it removed in Node 14?
Solution 1:[1]
How are you loading the file? According to this issue, the problem arises if you load it as an ECMAScript module which do not contain __dirname.
https://github.com/nodejs/help/issues/2907#issuecomment-671782092
Following the documentation below you may be able to resolve the issue: https://nodejs.org/api/esm.html#esm_no_require_exports_module_exports_filename_dirname
import { fileURLToPath } from 'url';
import { dirname } from 'path';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
Solution 2:[2]
My code before was like below.
app.use(express.static(path.join(__dirname, 'public')));
And I got this error.
ReferenceError: __dirname is not defined in ES module scope
And I solved this by adding code below.
import path from 'path';
const __dirname = path.resolve();
Solution 3:[3]
There's usually no need to import from 'url' or 'path'.
E.g. (using ESM)
fs.readFileSync(new URL('myfile.txt', import.meta.url));
will read myfile.txt from the directory of the JavaScript file (not from the current working directory).
Solution 4:[4]
A quick fix (depending on your project) would be to ensure that "type": "module"
does not exist in your package.json
file
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | adlopez15 |
Solution 2 | padaleiana |
Solution 3 | ChrisV |
Solution 4 | Nathanael |