Javascript 使用async和Wait的未处理拒绝(InvalidTokenError)

Javascript 使用async和Wait的未处理拒绝(InvalidTokenError),javascript,error-handling,async-await,unhandled-exception,Javascript,Error Handling,Async Await,Unhandled Exception,尽管在正确的位置使用wait并捕获任何可能的错误,但当令牌未定义时,以下函数会抛出错误“未处理的拒绝(InvalidTokenError):指定的令牌无效:无法读取未定义的属性“replace”: 根据未定义的userToken值和您的错误位置(尽管它应该基于错误堆栈),异常可能是从resetUserContext()引发的 如果可能的话,你能分享这个功能吗?在可能隐藏了任何敏感数据之后。找到了!错误是由jwtDecode生成的。由于函数定义为async,并且在jwtDecode中抛出错误不会解

尽管在正确的位置使用
wait
并捕获任何可能的错误,但当令牌未定义时,以下函数会抛出错误“未处理的拒绝(InvalidTokenError):指定的令牌无效:无法读取未定义的属性“replace”:


根据未定义的userToken值和您的错误位置(尽管它应该基于错误堆栈),异常可能是从
resetUserContext()
引发的


如果可能的话,你能分享这个功能吗?在可能隐藏了任何敏感数据之后。

找到了!错误是由
jwtDecode
生成的。由于函数定义为
async
,并且在
jwtDecode
中抛出错误不会解决或拒绝承诺,因此生成了错误。为了解决这个问题,我在一个
try
中包围了
jwtDecode
,并捕获了错误。无论如何,谢谢您的回复。

这应该是一个评论。@Mayank,谢谢您的回复。我更新了问题并添加了您询问的信息。@TKoL对不起,我最近加入了SOF和atm,除了我自己的帖子,我无法在任何地方发表评论。我会记住您的建议,以备将来参考。因此,在您的代码库中的某个地方,无论是客户端还是服务器上,都有一个
.replace
函数正在运行。你能试着找到它吗?@TKoL,有趣的是我没有使用
。在客户端或服务器端代码的任何地方替换
。我认为这是在React中的
useState
hook中定义的。
async function authenticateUsingExistingToken() {
  const userToken = localStorage.FBIdToken;
  if (userToken) {
    const decodedToken = jwtDecode(userToken);
    if (decodedToken.exp * 1000 < Date.now()) {
      resetUserContext();
      localStorage.FBIdToken = "";
    } else {
      axios.defaults.headers.common["Authorization"] = userToken;
      try {
        const responseObj = await axios.get("/user");
        setUserStates(responseObj.data);
      } catch (err) {
        console.error("Authentication Error! err: ", err);
      }
    }
  } else {
    resetUserContext();
  }
}
authenticateUsingExistingToken();
./node_modules/jwt-decode/lib/index.js
C:/MY_FOLDER/client/node_modules/jwt-decode/lib/index.js:9
__webpack_require__
C:/MY_FOLDER/client/webpack/bootstrap:785
fn
C:/MY_FOLDER/client/webpack/bootstrap:150
Module../src/components/Auth/SignInUp/SignInUp.js
http://localhost:3000/static/js/main.chunk.js:374:68
__webpack_require__
C:/MY_FOLDER/client/webpack/bootstrap:785
fn
C:/MY_FOLDER/client/webpack/bootstrap:150
Module../src/containers/App/App.js
http://localhost:3000/static/js/main.chunk.js:2599:92
__webpack_require__
C:/MY_FOLDER/client/webpack/bootstrap:785
fn
C:/MY_FOLDER/client/webpack/bootstrap:150
Module../src/index.js
http://localhost:3000/static/js/main.chunk.js:3173:77
__webpack_require__
C:/MY_FOLDER/client/webpack/bootstrap:785
fn
C:/MY_FOLDER/client/webpack/bootstrap:150
1
http://localhost:3000/static/js/main.chunk.js:3328:18
__webpack_require__
C:/MY_FOLDER/client/webpack/bootstrap:785
checkDeferredModules
C:/MY_FOLDER/client/webpack/bootstrap:45
Array.webpackJsonpCallback [as push]
C:/MY_FOLDER/client/webpack/bootstrap:32
(anonymous function)
http://localhost:3000/static/js/main.chunk.js:1:67