redux没有捕获错误



因此,每当加载应用程序时,它都应该使用loadUser()检查用户身份验证,我遇到的问题是,如果localStorage中没有令牌,服务器不会返回任何错误(当它假设返回时(。我查看了auth(后端(的代码,当没有收到令牌时,它会返回一个状态测量,我想知道是不是因为没有令牌不是一种错误,这就是服务器没有发送错误响应的原因?

以下是代码片段:

auth.js(后端(

const jwt = require("jsonwebtoken");
const config = require("config");
module.exports = function (req, res, next) {
//get token from header
const token = req.header("x-auth-token");
// check if not token


if (!token) {
return res.status(401).json({ msg: "no token, auth denied" });
}

//verify token
try {
const decoded = jwt.verify(token, config.get("jwtSecret"));
req.user = decoded.user;
next();
} catch (err) {
res.status(401).json({
msg: "token isnt valid",
});
}
};

App.js

const App = () => {
useEffect(() => {
if (localStorage.token) {
setAuthToken(localStorage.token);
store.dispatch(loadUser());
}
}, []);

auth.js Redux

export const loadUser = () => async (dispatch) => {
console.log("from auth.js");
if (localStorage.token) {
setAuthToken(localStorage.token);
}
try {
const res = await axios.get("/api/auth");
console.log("inside auth.js get auth route");
dispatch({
type: USER_LOADED,
payload: res.data,
});
} catch (err) {
console.log("error from auth.js");
dispatch({
type: AUTH_ERROR,
});
}
};

基本上是catch(err) { //code }内部的代码不执行。

我真傻,在App.js中添加else条件解决了这个问题。

相关内容

  • 没有找到相关文章

最新更新