-Supongamos que tengo un archivo en la raíz de mi proyecto llamado "file.xml"
-Supongamos que tengo un archivo de prueba en tests / llamado "test.js" y tiene
const file = fs.readFileSync("../file.xml");
Si ahora ejecuto node ./tests/test.jsdesde la raíz de mi proyecto, dice ../file.xml no existe. Si ejecuto el mismo comando desde el directorio de pruebas, entonces funciona.
Parece que fs.readFileSync es relativo al directorio desde donde se invoca el script, en lugar de donde se encuentra el script. Si escribiera fs.readFileSync("./file.xml")en test.js, se vería más confuso y no es consistente con las rutas relativas en una declaración require que son relativas al archivo.
¿Por qué es esto?
¿Cómo puedo evitar tener que reescribir las rutas en mi fs.readFileSync?
__dirnameno es necesariamente el mismo que el directorio de trabajo actual, perofs.readFileSync()usa el directorio de trabajo actual. Es probable que el directorio de trabajo actual esté configurado como lo que era cuando lanzó node.