gpt4 book ai didi

javascript - Express.js 服务器错误处理 (404)。在我什至被允许处理错误之前,服务器吓坏了并抛出异常

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:51 24 4
gpt4 key购买 nike

(如果重要的话,我将 Blizzard.js npm 包与 Express 结合使用。)

我正在构建一个网络应用程序,让用户可以搜索某个视频游戏的统计数据 Angular 色(玩家创建的个人资料),并且由于存在不存在的用户名,如果用户搜索没有帐户的用户名,我会尝试确保我的应用程序能够处理它。

当我查询一个不存在的用户名时,服务器函数没有看到并处理它,而是崩溃了,并在一个名为 node.js 的文件中抛出一些错误(在第 369 行,内容是 runMicrotasks();)。我注意到我必须在我的调试器中点击“恢复”两次。但是它不会使整个服务器崩溃。在用户方面,什么也没有发生。

但是在我的服务器调用中,我通过假设字符不存在并告诉用户来确保处理任何不是 200 的东西。(我知道,懒惰。我应该只在抛出 404 时才这样做,但我还没有克服这个错误)。我的 if 语句应该捕捉到这个,但我已经在调用中和调用中设置了断点,它甚至没有达到我的断点。服务器调用永远不会触发。

调用我的服务器的代码:

$scope.searchCharacter = function(){
$scope.charName = "obviouslyInvalidCharacterName";
$scope.selectedRealm = {name: "Dalaran", id: 66};
var request = {name: $scope.charName, realm: $scope.selectedRealm};
$http.post('/searchCharacter', request)
.then(function(response) {
//request body
});
}

服务器调用:

app.post('/searchCharacter', jsonParser, function (req, res) {
blizzard.wow.character(['profile', 'stats', 'items', 'statistics'], { origin: 'us', realm: req.body.realm.name, name: req.body.name })
.then(response => {
if(response.status != 200){
res.send("That character doesn't exist! Please enter a valid character name.");
} else {
res.send(response.data);
}
});
});

错误信息:

Error:
Exception has occurred: Error
Error: Request failed with status code 404
at createError (c:\Users\RDubz\Documents\Interviews\EagleDream 12-7-17\Project\node_modules\blizzard.js\node_modules\axios\lib\core\createError.js:16:15)
at settle (c:\Users\RDubz\Documents\Interviews\EagleDream 12-7-17\Project\node_modules\blizzard.js\node_modules\axios\lib\core\settle.js:18:12)
at IncomingMessage.handleStreamEnd (c:\Users\RDubz\Documents\Interviews\EagleDream 12-7-17\Project\node_modules\blizzard.js\node_modules\axios\lib\adapters\http.js:191:11)
at emitNone (events.js:72:20)
at IncomingMessage.emit (events.js:166:7)
at endReadableNT (_stream_readable.js:921:12)
at nextTickCallbackWith2Args (node.js:442:9)
at process._tickCallback (node.js:356:17)

最佳答案

不熟悉暴雪,但您有一个潜在的未处理 promise 拒绝。在 .then() 之后执行 .catch(console.log) 以查看是否有任何拒绝抛出的异常。

可能是因为您没有注意 API 的细微差别(或者文档不完善)。

例如,在 native 获取 API 中,错误状态代码不会抛出错误/拒绝,但也许在暴雪的这个中它会抛出错误/拒绝?只是猜测,检查一下看看! :)

关于javascript - Express.js 服务器错误处理 (404)。在我什至被允许处理错误之前,服务器吓坏了并抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47785420/

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