Node.js создаст файл, но не запишет в него, используя следующий код. node-186364e.exe на Windows XP - PullRequest
0 голосов
/ 05 сентября 2011
var
http = require('http'),
fs = require('fs'),
buffer,
working = 'notworking',
options = {
        host: '202.138.228.141',
        port: 8080,
        path: 'www.google.com'
};

http.get(options, function(res) {

        if (res.statusCode < 400) working = 'working';
        writeResults(options);

}).on('error', function (e) {

        writeResults(options);

});

function writeResults (options) {
        buffer = '\n' + options.host + ':' + options.port + ':' + working;
        fs.open('results.ht', 'a', function (err, fd) {
                fs.write(fd, buffer, function (e, written, buf) {
                        fs.closeSync(fd);
                });
        });
}

1 Ответ

0 голосов
/ 06 сентября 2011

Если вы хотите записать данные из http.get, вам нужно сделать:

http.get(options, function(res) {
    var data = '';
    res.on('data', function(d) {
        data += d;
    });
    res.on('end', function(e) {
        writeResults(options, working, data);
    });
}).on('error' function(e) {
   writeResults(options, 'ERROR', null);
});

тогда, возможно, измените writeResults на:

function writeResults(options, working, data) {
    buffer = '\n' + options.host + ':' + options.port + ':' + working;
    if (data) {
        buffer += '\n' + data;
    }
    fs.open('results.ht', 'a', function (err, fd) {
        fs.write(fd, buffer, function (e, written, buf) {
            fs.closeSync(fd);
        });
    });
};
...