2015-06-11 2 views
2

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

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

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

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})); 

ответ

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, вы вынуждаете процесс завершить выполнение всего перед выходом.

Смежные вопросы