Encodera

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

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

Как удалить файл в Node.js

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

unlink() удаляет файл:

import { unlink, writeFile } from 'node:fs/promises';
import { existsSync } from 'node:fs';
 
await writeFile('temp.txt', 'data');
await unlink('temp.txt');
 
console.log(existsSync('temp.txt'));

Результат:

false

Если файла может не быть

rm() с force: true не выбрасывает ошибку для отсутствующего файла:

import { rm } from 'node:fs/promises';
 
await rm('maybe-missing.txt', { force: true });
console.log('no error');

Результат:

no error

По расширению

Прочитайте папку и удалите подходящие файлы:

import { mkdir, readdir, unlink, writeFile } from 'node:fs/promises';
import { join } from 'node:path';
 
await mkdir('cache', { recursive: true });
for (const name of ['a.tmp', 'b.tmp', 'keep.txt']) await writeFile(join('cache', name), '');
 
for (const name of await readdir('cache')) {
  if (name.endsWith('.tmp')) await unlink(join('cache', name));
}
 
console.log(await readdir('cache'));

Результат:

[ 'keep.txt' ]

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

unlink() для отсутствующего файла выбрасывает ошибку ENOENT и останавливает скрипт, если её не перехватить:

import { unlink } from 'node:fs/promises';
 
try {
  await unlink('ghost.txt');
} catch (error) {
  console.log(error.code);
}

Результат:

ENOENT

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

  • String.prototype.endsWith — Проверяет, заканчивается ли строка заданным текстом.

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

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