node.js - 在调用另一个函数的函数中处理 UnhandledPromiseRejectionWarning

标签 node.js error-handling axios

我在调用其他发出 axios 请求的函数的函数中处理 UnhandledPromiseRejectionWarning 时遇到问题。

const getCode = async () => {
  const code = await baseURL.get('/gcs/login/k?codigoCanal=4')
  return code
}

const posLogin = async (code) => {
  const poslogin = await baseURL.get(`/resource/autenticar/${code}`)
  return poslogin
}

const login = async () => {
 try {
  const code = await getCode();
  const finishedLogin = async posLogin(code)
 } catch (error) {
   handleLoginError(error)
 }
}

const handleLoginError = (error) => {
  if (error.response.status === 400) {
      throw new Error(`Bad Request; ${error.response.statusText}`)
    }
  if (error.response.status === 401) {
    throw new Error(`Wrong credentials; ${error.response.statusText}`)
  }
  throw new Error('Unknown Error')
}


login()
执行此代码返回 UnhandledPromiseRejectionWarning,但我意识到如果我在登录函数的 catch 中放置一个 try catch,此警告就会消失
} catch (error) {
  try {
    handleLoginError(error)
  } catch (err) {
    console.log('Ooppss', err)
  }
当我这样做时,我的代码进入嵌套的 catch 并且“err”值是 handleLoginError(error) 的值
如果不在 catch 内执行 try catch,我该如何做同样的事情?

最佳答案

看来你需要调用login如下:

try {
  await login();
}
catch(err) {
  // handle here the error
}

关于node.js - 在调用另一个函数的函数中处理 UnhandledPromiseRejectionWarning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63268069/

相关文章:

node.js - 通过 NodeJs 捕获 Azure Linux 应用服务中的标准输出

angularjs - MEANJS:SocketIO 中的安全性

javascript - 为什么 axios 在解析 twitter 搜索 api 响应后以某种方式修改推文的 id?

jquery - ExpressJS + jsdom — 范围问题

node.js - 如何更改船长 maxTimeToBuffer 属性

error-handling - SPSS中广义线性混合模型的误差

java - 最佳实践 - 通用 webdriver 等待加载弹出窗口存在,如果出现错误则测试失败

laravel api 未显示来自请求验证的消息

reactjs - 如何创建一个通用的全局 Axios 实例,该实例将使用我的 Redux 存储来获取 header token 信息?

javascript - 为什么 axios 无法在 Android 上的移动 google chrome 上发送 FormData?