Запись в файл .txt перед выходом из node.js

Я бы хотел, чтобы мой сервер сохранял некоторые важные данные при выходе из узла и загружал их в следующий раз.

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

Это точный код, который я пытаюсь:

process.stdin.resume();

function exitHandler(options, err) {
    if(!serverUp){return;}
    serverUp = false;
    fs.writeFile('server.txt', String(search_index),function (err) {
        console.log("debug") // <-- This doesn't happen
        process.exit();
    });   
}

//do something when app is closing
process.on('exit', exitHandler.bind(null,{cleanup:true}));

//catches ctrl+c event
process.on('SIGINT', exitHandler.bind(null, {exit:true}));

//catches uncaught exceptions
process.on('uncaughtException', exitHandler.bind(null, {exit:true}));

person user3262713    schedule 11.06.2015    source источник


Ответы (1)


Я думаю, если бы вы попробовали fs.writeFileSync, это решило бы эту проблему.

https://nodejs.org/api/fs.html#fs_fs_writefilesync_filename_data_options

Тогда код будет таким:

function exitHandler(options, err) {
    if(!serverUp){return;}
    serverUp = false;
    fs.writeFileSync('server.txt', String(search_index));
    console.log("debug");
    process.exit();   // Don't think you'll need this line any more
}

Я считаю, что проблема связана с асинхронным характером. Используя синхронную версию writeFile, вы заставляете процесс завершить все выполнение перед выходом.

person Lexi Brush    schedule 11.06.2015