He estado usando la versión 12.3.4
de Node, la actualicé a 14.14.0 y comencé a recibir muchos problemas que solucioné. lo unico que no entiendo es el tema
__dirname is not defined
__dirname
es una variable central en Node como sé, ¿se elimina en Node 14?
¿Cómo estás cargando el archivo? De acuerdo con este problema, el problema surge si lo carga como un módulo ECMAScript que no contiene __dirname.
https://github.com/nodejs/help/issues/2907#issuecomment-671782092
Siguiendo la documentación a continuación, es posible que pueda resolver el problema: 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);
Mi código antes era como el siguiente.
app.use(express.static(path.join(__dirname, 'public')));
Y tengo este error.
ReferenceError: __dirname no está definido en el alcance del módulo ES
Y resolví esto agregando el código a continuación.
import path from 'path'; const __dirname = path.resolve();
Por lo general, no es necesario importar desde 'url' o 'ruta'.
Por ejemplo (usando ESM)
fs.readFileSync(new URL('myfile.txt', import.meta.url));
leerá myfile.txt desde el directorio del archivo JavaScript (no desde el directorio de trabajo actual).