Удалить все файлы формата js в директории на node.js

Рейтинг: 0Ответов: 1Опубликовано: 22.02.2023

Необходимо удалить все файлы формата js в директории на node.js. Получилось следующее:

var fileMatch = require('file-match');

var filter = fileMatch('*.js');
 


// built-in modules for the application
const fs = require("fs").promises; 
const fsConstants = require("fs").constants; 
const path = require("path");
const fileFormat = '__dirname, lr_1.js'

// folder name
const folderName = "testdir"; 

//  folder location
const filePath = path.join(__dirname, folderName, "*.js");

// application script
fs.unlink(path.join(__dirname, folderName), path.extname(fileFormat)), (err) => {
  if (err) console.log(err); // если возникла ошибка    
  else console.log("*.js was deleted");
};

Получаю ошибку:

[Error: EPERM: operation not permitted, unlink 'D:\home files\institute\РВП\testdir'] {
  errno: ←[33m-4048←[39m,
  code: ←[32m'EPERM'←[39m,
  syscall: ←[32m'unlink'←[39m,
  path: ←[32m'D:\\home files\\institute\\РВП\\testdir'←[39m
}

Понимаю, что, скорее всего, требуется реализация через цикл forEach, но пока не получилось сообразить, как это сделать

Ответы

▲ 0

Я удалил файлы в каталоге таким образом...

const {readdir, stat, unlink} = require("fs").promises; 
const path = require("path");

let folder = "test"; 

folder = path.join(__dirname, folder);

readdir(folder)
    .then(a => {
        const s = a.map((f, i) => {
            a[i] = path.join(folder, f)
            return stat(a[i])
        })
        return Promise.all([a, Promise.all(s)])
    })
    .then(([a, s]) => {
        a = a.filter((f, i) => {
            if (!s[i].isFile()) return false
            return /\.js$/.test(f)
        })
        a = a.map(f => unlink(f))
        return Promise.all(a)
    })
    .then(a => {
        console.log('В каталоге', folder)
        console.log('Удалено файлов %sшт.', a.length)
    })
    .catch(console.log)