Witam, mam pewien problem z nasłuchiwaniem na zdarzenie zmian w pliku .js. Generalnie program działa, ale nie do końca tak, jakbym sobie tego życzył. Otóż gdy stworzę maksymalnie do dwóch zagnieżdżeń katalogowych, wówczas program działa prawidłowo i nasłuchiwanie jest cały czas aktywne. Problem natomiast pojawia się w momencie, gdy do zmiennej path chcę przekazać więcej niż dwa katalogi, czyli np. './dir1/dir2/dir3'. I w tym momencie okazuje się, że nasłuchiwanie jest wyłączone. Nieważne co zrobię z plikiem, czy go usunę, czy dodam jakiś nowy, czy cokolwiek innego - efekt jest taki sam, czyli brak wyniku w konsoli. Próbowałem zmienić wartość właściwości depth, ale efekt nadal taki sam. Udało mi się dojść do tego, że gdy po wpisaniu komendy np. 'node index.js dir1/dir2/dir3 script.js', wyjdę z tego nasłuchiwania poprzez Ctrl + C i ponownie wprowadzę tę samą komendę, wówczas nasłuchiwanie zadziała. Pytanie brzmi - dlaczego nie działa to za pierwszym razem? Jakieś opcje za to odpowiadają? I nie wiem, czy ma to znaczenie, ale korzystam z WebStorma. Cały kod poniżej:

const { extname, basename, normalize, resolve } = require('path');
const { mkdir, writeFile, readFile } = require('fs').promises;
const { watch } = require('chokidar');

const path = process.argv[2];
const file = process.argv[3];
const filePath = `${path}/${file}`;
const fullPath = safeJoin(__dirname, filePath);

function safeJoin(base, target) {
    const targetPath = '.' + normalize('/' + target);

    return resolve(base, targetPath);
}

async function showJsFileChanges(path, message) {
    if (extname(basename(path)) === '.js') {
        const data = await readFile(path, 'utf8');

        console.log(message + '\n' + data);
    }
}

(async () => {
    try {
        await mkdir(path, { recursive: true });
        await writeFile(fullPath, `const name = 'Name';`, 'utf8');
    } catch(err) {
        console.log(err);
    }
})();

watch(safeJoin(__dirname, path), { awaitWriteFinish: true })
    .on('add', path => showJsFileChanges(path, `File ${path} has been added successfully!`))
    .on('change', path => showJsFileChanges(path, `File ${path} has been changed successfully!`))
    .on('unlink', path => showJsFileChanges(path, `File ${path} has been unlinked successfully!`));