nodeJs出现错误时如何重定向登录

时间:2021-05-08 14:24:15

标签: node.js angular express

当用户从后端收到错误时,我试图返回登录页面。所以我的代码如下

authServer.js

app.use('/login', authService.login);

// other code ...

app.use(errorHandler);

function errorHandler (err, req, res, next) {
  if (res.headersSent) {
    return next(err)
  }
  if(err.response){
  res.redirect("/login");
  }
  else {
  res.status(500)
  res.render('error', { error: err })
}

authService.login 方法抛出的错误到达错误处理程序,但没有发生重定向。我也试过 res.redirect(config.get("loginUrl")) 但它似乎不起作用。在几个问题中,它被赋予使用 window.location.href = config.get("loginUrl") 但它抛出错误,因为 window is not defined 。由于 nodejs 不支持窗口。重定向到登录 Url 的正确方法是什么。登录网址将类似于外部网址“http://www.google.com”

更新

建议尝试修改如下

function errorHandler (err, req, res, next) {
      if (res.headersSent) {
        return next(err)
      }
      if(err.response){
      return res.status(err.response.status).send({ message : err.response.message } )
     }
      else {
      res.status(500)
      res.render('error', { error: err })
    }

角度服务

getUser() {

this.http.post<User>(url , data).pipe(catchError(this.handleError));
}

handleError(error: HttpErrorResponse) {
    let errorMessage = 'Unknown error!';
    if (error.error instanceof ErrorEvent) {
      // Client-side errors
      errorMessage = `Error: ${error.error.message}`;
    } else {
      // Server-side errors
      errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`;
    }
    window.alert(errorMessage);
    return throwError(errorMessage);
  }

user.ts

getUsers() {

this.userService.getUser().subscribe(data=>{
            this.user= data
            },
             error => {
            console.log(error) ---> never printed
 }
            );
}

这是我尝试过的,但似乎根本没有捕获到错误。这是所有问题中建议的解决方案。但是我只能在网络的响应选项卡中看到 json 但从未被捕获为错误并打印在控制台上的事情

0 个答案:

没有答案