无法从 Express 中捕获 React 中的错误
Posted
技术标签:
【中文标题】无法从 Express 中捕获 React 中的错误【英文标题】:Unable to catch error in React from Express 【发布时间】:2021-03-21 05:05:51 【问题描述】:我在处理来自客户端的 Express 注册 API 的错误时遇到问题。我正在使用带有上下文的 React 在我的网站中创建一个全局状态。
我像这样在 React 中构建了上下文提供程序:
const AuthContext = React.createContext()
export function useAuth()
return useContext(AuthContext)
export function AuthProvider( children )
const [currentUser, setCurrentUser] = useState()
function signup(email, password)
if (emailRe.test(email) && passwordRe.test(password))
axios.post('http://localhost:4000/users/create',
email: email,
password: password
).then((res) =>
setCurrentUser(res);
return res;
).catch((error) =>
return new Error("Can't register")
);
;
const value =
currentUser,
signup
return (
<AuthContext.Provider value=value>
children
</AuthContext.Provider>
)
在我的注册页面上,我有以下代码:
function Registration()
//some code
const signup = useAuth()
const onSubmit = async (e) =>
e.preventDefault()
if (password1===password2)
try
let res = await signup(email,password1);
catch
setEmailError(true) //<- this is where it does not work, I can't catch the error
return(
////
)
这个问题是我无法处理来自注册页面中注册功能的问题。有没有办法保持当前结构或者我必须在注册中移动整个注册功能(但我将无法很容易地更改上下文值)。
【问题讨论】:
【参考方案1】:尝试改变
return new Error("Can't register")
到
throw new Error("Can't register")
然后像这样捕获错误
try
let res = await signup(email, password1);
catch (error)
console.log(error)
setEmailError(true);
【讨论】:
现在发生错误时,我得到“未处理的拒绝(错误):”无法注册“” 这不是你需要的吗? 我仍然遇到同样的错误......让我再检查一下是否可以找到任何东西 我不明白你想要什么。你能看到控制台日志吗?如果是,这就是您所需要的,不是吗? 它会记录错误但不会设置电子邮件错误。无论如何我认为所有这些代码背后的想法都是错误的,我将 axios 放在注册页面中,它现在可以正常工作。感谢您的帮助!以上是关于无法从 Express 中捕获 React 中的错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 react、webpack 和 express 无法在浏览器中加载图像
未捕获的错误:引发了跨域错误。 React 无法访问开发中的实际错误对象
Express Server 无法从 React Native 应用程序获取请求
无法从 react-native 中的 navigation.geolocation.getCurrentPosition() 返回位置