我有一个browsers.json文件,我希望在每次部署时进行更新。

万一更新文件的请求失败了,我想保持原始文件不变。

是这样做的好方法,还是有“更好的实践”方法?

var http = require('http');
var fs = require('fs');
var url = 'http://saucelabs.com/rest/v1/info/browsers/webdriver';

if (fs.existsSync('browsers.json')){
    var browsers = JSON.parse(fs.readFileSync('browsers.json'));
}

http.get(url, function (res) {
    var data = '';

    res.on('data', function (chunk) {
        data += chunk;
    });

    res.on('end', function () {
        var obj = JSON.parse(data);
        fs.writeFile('browsers.json', data, function (err) {
            if (err) throw err;
        });
    })

}).on("error", function () {
    fs.writeFile('browsers.json', browsers, function (err) {
        if (err) throw err;
    });
});

最佳答案

我会说,如果出错,您不应该写任何东西。我还要说,通常最好将响应直接传递到文件上的可写流,这样就不会在内存中缓冲整个内容。 (不过,如果文件很小,那可能没什么大不了的。)

最后,一旦拥有数据,别忘了重新解析和加载数据。

关于javascript - NodeJS请求和错误处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22254031/

10-12 13:29