Модуль FS при выполнении функции appendFileSync видит файл только через полный путь

Есть код

const fs = require("fs");
fs.appendFileSync("file.txt", "Some text here");

При выполнении кода ошибок не выдаёт, но файл по-прежнему остаётся пустым. Пробовал ввести полный путь, все заработало, но нужен краткий путь. Файл file.txt лежит в одной папке с index.js файлом. Объясните, пожалуйста, почему не записывается файл?


Ответы (1 шт):

Автор решения: vsemozhebuty

Проблема может быть ещё вот в чём: важно не только, находятся ли файлы index.js file.txt в одной папке, важно ещё, откуда вы вызываете index.js. Если файлы находятся в папке C:\project\, а index.js вы вызываете из C:\, то текущей папкой будет считаться C:\, там будет искаться файл file.txt — а когда он не будет найден, будет создан заново.

Если хотите записывать в файл в одной со скриптом папке независимо от места вызова скрипта, можно попробовать так:

const fs = require("fs");

const path = `${__dirname}\\file.txt`

console.log(fs.readFileSync(path, "utf8"));
fs.appendFileSync(path, "Some text here");
console.log(fs.readFileSync(path, "utf8"));
→ Ссылка