2017-09-01 100 views
0

所以我拉動遠程JSON來爲自動更新過程提供版本號,如果我在線,我能夠拉動文件就好了,我禁用了我的網絡適配器強制沒有連接​​,並且該應用程序崩潰到桌面。節點Webkit http崩潰

這裏是我的代碼:

var http = require('http'); 
var options = { 
    host: 'xxxx.xxxx.io', 
    path: '/remote.json' 
}; 

var req = http.get(options, function (res) { 
var response = ""; 

    res.on("data", function (data) { 
     response += data; 
     var json = response; 
     console.log("output:\n" + response); 
    }); 
    res.on("error", function (e) { 
     response += e; 
     console.log(e); 
    }); 
    res.on("uncaughtException", function (err) { 
     response += err; 
     console.log(err); 
    }); 
    res.on("end", function() { 
     console.log("end:\n" + response); 
    }); 
}); 

我在經驗不足猜我設立的誤差以某種方式不正確檢查?有沒有人可以提供答案,以便應用程序在啓動時不會崩潰?

回答

0

我找到了答案。

我需要聲明http.get函數之外的on.error。

var http = require('http'); 
var options = { 
    host: 'xxx.xxxxx.io', 
    path: '/remote.json', 
    method: 'get' 
}; 

var res = http.get(options, function (res) { 
    var response = ""; 

    res.on("data", function (data) { 
    response += data; 
}); 
res.on("end", function() { 
    console.log("output:\n" + response); 
    var json = JSON.parse(response); 
    console.log(json.type); 
    }); 
}) 

.setTimeout(3000, function() { 
    console.log("ERROR: The connection timed out."); 
    res.abort(); 
}) 

.on('error', (e) => { 
    if (e.code === "ENOENT") { 
    console.log("ERROR: There is no Internet connection."); 
    } 
});