Javascript 错误:未捕获(承诺):[object Boolean]
在我制作的这个有角度的应用程序中,我试图保护我的一条路线。我认为我已经正确地实现了它,但是,当调用负面场景时,我遇到了这个错误:error error:Uncaught in promise:[object Boolean]。我也不能理解的是,当我满足允许路线的条件时,它似乎起作用了?!代码如下: 路由模块 身份验证服务 警卫服务Javascript 错误:未捕获(承诺):[object Boolean],javascript,angular,typescript,angular-router,Javascript,Angular,Typescript,Angular Router,在我制作的这个有角度的应用程序中,我试图保护我的一条路线。我认为我已经正确地实现了它,但是,当调用负面场景时,我遇到了这个错误:error error:Uncaught in promise:[object Boolean]。我也不能理解的是,当我满足允许路线的条件时,它似乎起作用了?!代码如下: 路由模块 身份验证服务 警卫服务 有人知道这里发生了什么吗?任何帮助都将不胜感激 假设您使用的版本>=7。试着替换 this.router.navigate(['/recipes']); 与 你也可
有人知道这里发生了什么吗?任何帮助都将不胜感激 假设您使用的版本>=7。试着替换
this.router.navigate(['/recipes']);
与
你也可以摆脱
: Observable<boolean> | Promise<boolean> | boolean
正如typescript将能够推断出的那样。我希望问题在gothere2案例中的else中。它不进行身份验证,并承诺返回布尔值。然而,你不会归还任何东西。在身份验证案例中,您所处的位置。我将如何修复:
(authenticated: boolean) => {
if (authenticated) {
console.log(`got here1`)
return true;
} else {
console.log(`got here2`)
this.router.navigate(['/recipes']);
return false;
}
面临完全相同的错误,但与OP的情况不同 我拒绝了一个等待语句的承诺,看起来error在拒绝后找不到被抓住的地方,并抛出了error:Uncaught in promise:[object Boolean] 将我的等待语句放在try-catch块下修复了错误 如果有人遇到相同问题,请在下面添加我的代码: DataService.ts
我已经试过了,从我的最后得到了同样的错误,这就是我如何修复它。 正如您在屏幕截图中看到的,我不允许用户访问服务器路由。 我使用isAuthenticated方法的初始身份验证服务如下 为了防止此错误,我们需要捕获它,如下所示。 现在我没有得到任何错误。
删除类型违背了使用typescript的目的。另外,这个.router.navigate['url']@mwilson也没有什么问题,但在本例中这是不正确的。。。typescript将自动推断返回类型。。。您不必显式声明返回类型。。。在guardHey中正确的重定向方式,我已经实现了return false,它仍然抛出错误:Uncaught in promise:[object Boolean]在我的应用程序中,有什么想法吗?我会把那篇文章读一读,无论如何为帮助干杯!
this.router.navigate(['/recipes']);
return this.router.parseUrl('/recipes');
: Observable<boolean> | Promise<boolean> | boolean
(authenticated: boolean) => {
if (authenticated) {
console.log(`got here1`)
return true;
} else {
console.log(`got here2`)
this.router.navigate(['/recipes']);
return false;
}
serviceCall(): Promise<SomeEntity | HttpErrorResponse> {
return new Promise((resolve, reject) => {
myService.doSomeWork()
.then(data => {
resolve(data);
})
.catch(error => {
reject(error)
})
})
}
try {
await DataService.serviceCall();
} catch (error) {
// error from the rejected promise should get caught here
console.log(error)
}