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?
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);
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();
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).