сохранение файла с содержимым в виде числа с содержанием NaN - PullRequest
0 голосов
/ 02 марта 2020

В моем приложении nodejs есть простой скрипт, управляющий файлом. Когда приложение запускается, оно работает бесконечно и через фиксированные промежутки времени сохраняет текущее значение (то есть number).

Допустим, у нас есть файл counter.dat, а его содержимое - число 6570. Приложение запущено и работает, файл корректно обновляется в течение нескольких дней. В некоторых случаях мне приходится перезапускать процесс, а иногда (редко) я нахожу внутри NaN вместо правильного номера.

Я провел несколько тестов, и кажется, что в начальном файле и при выходе из него действительно иногда может храниться NaN.

const init = async () => {
    ...
    const readCounter = await files.getContent("counter.dat");
    ...
};

const saveCounter = (counter) => {
    // this value (counter) was never found NaN, but sometimes file has NaN inside
    let stream = fs.createWriteStream("counter.dat");
    stream.once('open', () => {
        stream.write(counter);
        stream.end();
    });
};

Может ли быть так, что выходящий скрипт (например, с CTRL + C в терминале MA C) может привести к тому, что number будет сохранен как NaN, и если это так, что можно сделать для предотвратить это?

1 Ответ

0 голосов
/ 02 марта 2020

Да, понятно, если вы введете CTRL + c, тогда ваш процесс закроется.

Вы должны сохранить ваш скрипт активным, даже если вы закроете терминал.

Существует модуль с именем pm2 , вы можете запустить свой скрипт по pm2 .

...