Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как записать данные в файл в Node.js

Короткий ответ

writeFile() создаёт файл или полностью заменяет его содержимое:

import { readFile, writeFile } from 'node:fs/promises';
 
await writeFile('greeting.txt', 'Hello, Anna!');
 
console.log(await readFile('greeting.txt', 'utf8'));

Результат:

Hello, Anna!

Массив строк

Перед записью соедините строки переводом строки:

import { readFile, writeFile } from 'node:fs/promises';
 
const tasks = ['Buy milk', 'Call Anna', 'Write a report'];
await writeFile('tasks.txt', tasks.join('\n') + '\n');
 
console.log(await readFile('tasks.txt', 'utf8'));

Результат:

Buy milk
Call Anna
Write a report

В папку, которой ещё нет

writeFile() не создаёт папки. Сначала создайте их через mkdir() с параметром recursive:

import { mkdir, writeFile, readFile } from 'node:fs/promises';
 
await mkdir('output/reports', { recursive: true });
await writeFile('output/reports/day.txt', 'done');
 
console.log(await readFile('output/reports/day.txt', 'utf8'));

Результат:

done

Частая ошибка

Каждый writeFile() перезаписывает файл, поэтому при вызове в цикле останется только последняя строка. Чтобы дописывать в конец, используйте appendFile():

import { readFile, writeFile } from 'node:fs/promises';
 
for (const line of ['first', 'second', 'third']) {
  await writeFile('log.txt', line + '\n');
}
 
console.log(await readFile('log.txt', 'utf8'));

Результат:

third

Функции из этого ответа

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.