reactjs React - catch错误-console.log有问题

rkue9o1l  于 2023-06-22  发布在  React
关注(0)|答案(2)|浏览(163)

我有一点小问题,但我不知道我做错了什么。我有如下功能。在.catch警报工作正常,我看到错误在浏览器,但我有问题与这个相同的错误在console.log <-我没有看到任何😦基本上,我想传递错误到另一个函数,如通知(错误),但我没有看到任何.

const signIn = (e) => {
    e.preventDefault();
    signInWithEmailAndPassword(auth, email, password)
      .then(() => {
        navigate("/");
      })
      .catch((error) => {
        // notify(error)
        console.log("error: ", error);
        alert(error);
      });
  };

我尝试尝试尝试try catch和async await,但我遇到了同样的问题:

async function signIn(e) {
try {
  e.preventDefault();
  await signInWithEmailAndPassword(auth, email, password).then(() => {
    navigate("/");
  });
} catch (error) {
  // notify(error);
  console.error("error: ", error);
  alert(err);
}

}

tpxzln5u

tpxzln5u1#

您不能直接在console.log中调用error对象,因为js将error解析为JSON对象时存在一些问题。在notify()函数中使用error.messageerror.toString()。错误对象具有中断,导致解析JSON对象时出现问题。检查下面的代码,只有error.message,这是第一行(键:值对)是可访问的。请注意,JSON.parse(error)因此给出了一个错误。

try {
  const a = s.getElementbyId('ss');
  console.log(a.style);
} catch (error) {
  console.log( error.toString());
  console.log(error.message);
  console.log(error.lineno);
  console.log(JSON.parse(error));
}
snz8szmq

snz8szmq2#

您面临的问题可能与传递给console.log语句的错误对象有关。错误对象有时可能不会直接在控制台显示,具体取决于其结构
要确保正确记录错误,可以尝试使用console.error而不是console.log:

console.error("error:", error);

另外,如果你想将错误传递给另一个函数,比如notify,你可以**取消注解notify(error)**行,并确保notify函数被正确实现,并且能够处理错误对象。

.catch((error) => {
  notify(error);
  console.error("error:", error);
  alert(error);
});

相关问题