2017-09-01 5 views
0

Donc, je tire JSON distant pour fournir le numéro de version pour une procédure de mise à jour automatique, je suis capable de tirer le fichier très bien si je suis en ligne, j'ai désactivé ma carte réseau pour forcer aucune connectivité, l'application se bloque sur le bureau.Node Webkit Crash http

Voici mon code:

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

Je pense que dans mon manque d'expérience, je suis en train de vérifier l'erreur de manière incorrecte d'une certaine façon? Quelqu'un d'entre vous pourrait-il fournir la réponse pour que l'application ne plante pas au démarrage?

Répondre

0

J'ai trouvé la réponse à cette question.

J'avais besoin de déclarer l'on.error en dehors de la fonction http.get.

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