-Supposons que j'ai un fichier à la racine de mon projet appelé file.xml
.
-Supposons que j'ai un fichier de test dans tests/ appelé "test.js" et qu'il a
const file = fs.readFileSync("../file.xml");
Si je lance maintenant node ./tests/test.js
Dans la racine de mon projet, il est écrit ../file.xml
n'existe pas. Si j'exécute la même commande depuis le répertoire des tests, cela fonctionne.
Il semble fs.readFileSync
est relatif au répertoire à partir duquel le script est invoqué, au lieu de l'endroit où se trouve réellement le script. Si j'ai écrit fs.readFileSync("./file.xml")
en test.js
cela serait plus déroutant et n'est pas cohérent avec les chemins relatifs dans un fichier require
qui sont relatifs au fichier.
Pourquoi ? Comment puis-je éviter d'avoir à réécrire les chemins d'accès dans mon fichier fs.readFileSync
?
6 votes
__dirname
n'est pas nécessairement le même que le répertoire de travail actuel, maisfs.readFileSync()
utilise le répertoire de travail actuel. Le répertoire de travail actuel est probablement défini comme ce qu'il était lorsque vous avez lancé node.