下面是我的代码块:
const getToken = async () => {
try {
const token = await axios.post(keys.sessionURL, {
email: keys.verificationEmail,
password: keys.verificationPassword,
});
} catch (err) {
throw new Error('Unable to establish a login session.'); // here I'd like to send the error to the user instead
}
};
如你所见,我连接到外部服务器以获取令牌。这是有效的。现在,我想捕获一个错误,但这次不是用'throw new error',而是想将其发送给用户,所以我想使用类似下面的代码:
res.status(401).send('Unable to get a token');
但是因为我不在路由处理程序里面,所以我不能使用"res",那么我怎么把它发送给用户呢?
谢谢大家!
7条答案
按热度按时间qlfbtfca1#
对于axios版本-0. 19. 0以下的代码,在与async wait斗争了几个小时后工作。虽然不确定其他版本!
mitkmikd2#
你可以保留几乎相同的功能
然后从路由处理程序中只返回
catch
最终异常默认的js异常系统可以很好地通过调用堆栈传递错误数据。
kokeuurv3#
在我的解决方案中,我用途:
如果失败,我们将得到如下错误:
我们也可以得到状态码:
au9on6nz4#
你保持一个像
isAuthError
这样的标志,如果错误发生,发送它为真,如果isAuthError
标志为真,在main函数中抛出错误,在catch中处理否则执行你的操作。我在下面添加了一个例子。希望它能帮助你主函数
qc6wkl3g5#
try/catch不是一个好的解决方案,它的目的是捕获运行时错误,而不是来自axios的HTTP错误(如果错误由拦截器处理,然后通过
return Promise.reject(error);
传递回调用者下面是拦截器示例
让我们从无法运行的try/catch示例开始
我发现这个模式可以工作。假设你想在一个循环中进行调用,以避免由于JS的异步特性而进行多个http调用。
bprjcwpo6#
保持
async / await
的优雅:wn9m85ua7#
优雅与TypeScript。