gpt4 book ai didi

javascript - Node.js https.get.on ("error",函数(e){...} 不工作

转载 作者:行者123 更新时间:2023-12-05 07:51:04 26 4
gpt4 key购买 nike

同时尝试在 Treehouse.com 上完成 Node.js 类(class)我无法让 .on("error") 处理 https.get() 工作。下面是我的代码:

var https = require("https");

// Print out message
function printMessage(username, badgeCount, points) {
var message = username + " has " + badgeCount + " total badge(s) and " + points + " points in JavaScript.";
console.log(message);
}

// Print out error messages
function printError(error) {
console.error(error.message);
}

function get(username) {
// Connect to the API URL (https://teamtreehouse/username.json)
var request = https.get("teamtreehouse.com/" + username + ".json", function(response){
var body = "";
// Read the data
response.on("data", function (chunk) {
body += chunk;
});
response.on("end", function(){
if (response.statusCode === 200) {
try {
// Parse the data
var profile = JSON.parse(body);
// Print the data
printMessage(username, profile.badges.length, profile.points.JavaScript);
} catch (error) {
// Parse Error
printError(error);
}
} else {
// Status Error
printError({message: "The user: " + username + " can not be found. HTTP Status Code: " + response.statusCode});

}
});
});
// Connection error
request.on("error", printError);
}

module.exports.get = get;

URL 中的协议(protocol)已被故意删除以导致连接错误。这应该被 request.on("error", printError); 捕获,但事实并非如此。相反,控制台中的反馈是:

https.js:191
throw new Error('Unable to determine the domain name');
^

Error: Unable to determine the domain name
at Object.exports.request (https.js:191:13)
at Object.exports.get (https.js:201:21)
at get (/Users/dangranger/Sites/sandbox/JavaScript/Node/profile.js:16:23)
at Array.forEach (native)
at Object.<anonymous> (/Users/dangranger/Sites/sandbox/JavaScript/Node/treehouseApp.js:3:7)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)

我正在使用 Node.js 5.6.0

最佳答案

谢谢@adeneo,看来你是对的。似乎要捕获此类错误,您需要一个 try catch block ,如本答案 Why is this basic Node.js error handling not working? 中所述。

关于javascript - Node.js https.get.on ("error",函数(e){...} 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35523453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com