Angular 错误:序列中没有元素。Rxjs onErrorResumeNext()和first()

Angular 错误:序列中没有元素。Rxjs onErrorResumeNext()和first(),angular,operators,angular8,Angular,Operators,Angular8,首先,我在谷歌上搜索了很多关于错误的问题:序列中没有元素。将first()替换为take(1)可以解决我的问题,但对我来说这是一个解决方法,而不是修复方法 我在项目中使用Angular 8。 代码 loadResources(resources: LocalizeResources = null) { // some other codes... const urls = [ `json/i18n-resources${this.locale ? '-' + th

首先,我在谷歌上搜索了很多关于错误的问题:序列中没有元素。将first()替换为take(1)可以解决我的问题,但对我来说这是一个解决方法,而不是修复方法

我在项目中使用Angular 8。

代码

loadResources(resources: LocalizeResources = null) {

    // some other codes...

    const urls = [
      `json/i18n-resources${this.locale ? '-' + this.locale : ''}.json`,
      'json/i18n-resources-en-GB.json',
      'json/i18n-resources.json'
    ]

    return onErrorResumeNext(
      urls.map(url => this.http.get<LocalizeResources>(url))
    ).pipe(
      first(),
    ).toPromise();
  }
loadResources(资源:LocalizeResources=null){
//其他一些代码。。。
常量URL=[
`json/i18n资源${this.locale?'-'+this.locale:'}.json`,
'json/i18n resources en GB.json',
'json/i18n resources.json'
]
返回下一个(
url.map(url=>this.http.get(url))
).烟斗(
第一个(),
).toPromise();
}
在这个函数中,我使用onErrorResumeNext()从后端检索数据。它应该根据URL逐个检索数据,直到获得第一个数据(即操作符first()起作用)

但不知何故,它只使用第一个url
json/i18n resources${this.locale?'-'+this.locale:''}.json
,并且该url没有要返回的资源,然后控制台中显示错误错误:序列中没有元素

那么为什么不使用下两个URL呢?

我已经在后端定义了resource文件,我可以通过第二个url获得它。但是,onErrorResumeNext()只是不想尝试,它只是在第一个url没有返回任何内容时停止


用take(1)替换first()是有效的,我知道,但这不是根本原因,也不是修复方法任何人都能帮上忙吗?

问题只发生在生产环境中,ng serve可以解决。而问题只发生在生产环境中,ng serve可以解决。