错误 EmptyErrorImpl {消息:"no elements in sequence",名称:"EmptyError"} Angular 7

ERROR EmptyErrorImpl {message: "no elements in sequence", name: "EmptyError"} in Angular 7

我在尝试从特定组件导航到不同路线时遇到奇怪的错误。如果我从其他组件导航到不同的路线,我不会看到此错误。 我附上错误的截图

我已经搜索过这个问题,似乎是 RxJS 或空路由的问题。但是我添加了 pathMatch:'full' 到空路由,我的 RxJS 版本是 6.3.3。任何想法或这里的任何人解决了同样的问题可能会有很大帮助。

EmptyErrorfirst 管道抛出,如果源可观察对象在发出任何通知之前关闭。

您的堆栈跟踪显示 TextblockComponent 在其 ngOnDestroy 函数中触发了一个 takeUntil 管道,这通常会关闭一个 Observable。可以假设这会关闭具有 first 管道的 Observable,从而导致 EmptyError.

错误可以通过使用 take(1) 而不是 first() 来避免。

这是关于此类错误的最常见问题(也是自“pathMatch: 'full'”错误现已修复以来较现代的问题之一),因此我想提供这些在 ggradnig 的回复中找不到解决方案(虽然一般来说都是钉子)。

看看你的拦截器

如果您的 HTTP 请求在发送之前被拦截器抢走,并且该拦截器由于某种原因失败,您的请求将被卡住。

举个我最近 2 天调试的例子:如果你使用 JWT 身份验证,你很可能在某个地方有一个拦截器将你的访问令牌附加到 AJAX 请求,所以你没有始终手动执行此操作。如果这个拦截器抢走了你的请求,而你没有为他们找不到附加到请求的令牌而编写任何逻辑,你可能会发现自己遇到这个错误。