最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Writing to a .txt file before node.js exits - Stack Overflow

programmeradmin1浏览0评论

I'd like my server to save some essential data when node exits and load them next time.

I tried what the answer of this question suggested, but the server seems to close before it is able to write to the file.

This is the exact code I am trying:

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

I'd like my server to save some essential data when node exits and load them next time.

I tried what the answer of this question suggested, but the server seems to close before it is able to write to the file.

This is the exact code I am trying:

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}));
Share Improve this question edited May 23, 2017 at 10:26 CommunityBot 11 silver badge asked Jun 11, 2015 at 12:01 user3262713user3262713 3799 silver badges21 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 7

I think if you tried fs.writeFileSync it would solve this.

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

The code would then be:

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
}

The issue I believe is because of the async nature. By using the synchronous version of writeFile you're forcing the process to finish executing everything before exiting.

发布评论

评论列表(0)

  1. 暂无评论