На этой странице

Проще всего писать в файлы в Node.js с помощью API fs.writeFile().

const fs = require('node:fs');

const content = 'Some content!';

fs.writeFile('/Users/joe/test.txt', content, err => {
  if (err) {
    console.error(err);
  } else {
    // файл успешно записан
  }
});

Как вариант, можно использовать синхронную версию fs.writeFileSync():

const fs = require('node:fs');

const content = 'Some content!';

try {
  fs.writeFileSync('/Users/joe/test.txt', content);
  // файл успешно записан
} catch (err) {
  console.error(err);
}

Можно также использовать метод fsPromises.writeFile() на основе промисов, предлагаемый модулем fs/promises:

const fs = require('node:fs/promises');

async function example() {
  try {
    const content = 'Some content!';
    await fs.writeFile('/Users/joe/test.txt', content);
  } catch (err) {
    console.log(err);
  }
}

example();

По умолчанию этот API заменяет содержимое файла, если файл уже существует.

Изменить поведение по умолчанию можно, указав флаг:

ФлагОписаниеФайл создаётся, если не существует
r+Этот флаг открывает файл для чтения и записи❌
w+Этот флаг открывает файл для чтения и записи, а также ставит поток в начало файла✅
aЭтот флаг открывает файл для записи, а также ставит поток в конец файла✅
a+Этот флаг открывает файл для чтения и записи, а также ставит поток в конец файла✅

Дописывание в файлы удобно, когда вы не хотите перезаписывать файл новым содержимым, а хотите добавить к нему.

Удобный метод для дописывания содержимого в конец файла — fs.appendFile() (и его аналог fs.appendFileSync()):

const fs = require('node:fs');

const content = 'Some content!';

fs.appendFile('file.log', content, err => {
  if (err) {
    console.error(err);
  } else {
    // готово!
  }
});

Вот пример fsPromises.appendFile():

const fs = require('node:fs/promises');

async function example() {
  try {
    const content = 'Some content!';
    await fs.appendFile('/Users/joe/test.txt', content);
  } catch (err) {
    console.log(err);
  }
}

example();