如何解决使用 ssr 加载带有解析器的路径时,Angular 应用程序通常需要很长时间
我在使用 ssr 为我的应用提供服务时遇到了一些问题。它在使用 ng s --o
正常加载时工作正常。但是,当我使用 npm run dev:ssr
为其提供服务并加载路径时,有时在使用下面的解析器时需要很长时间才能提供服务。部署时足以超时(> 60 秒)。我正在使用节点 10。
solution.resolver.ts
import { Injectable } from '@angular/core';
import { AngularFirestore } from '@angular/fire/firestore';
import {
Resolve,RouterStateSnapshot,ActivatedRouteSnapshot
} from '@angular/router';
import { from,Observable } from 'rxjs';
import { map,mergeMap,reduce } from 'rxjs/operators';
import { Solution } from './Solution.type';
import { AngularFireStorage } from '@angular/fire/storage';
@Injectable({
providedIn: 'root'
})
export class SolutionResolver implements Resolve<Solution[]> {
constructor(
private firestore: AngularFirestore,private storage: AngularFireStorage
) {}
resolve(
route: ActivatedRouteSnapshot,state: RouterStateSnapshot,): Observable<any> { // Solution[]
return this.firestore.collection('solutions').get() // Observable<doc>
.pipe(
map( snapshot => snapshot.docs.map( doc => doc.data() ) as Solution[]),// Observable<Solution[]>
mergeMap( solutions => from(solutions) ),// stream of Observable<Solution>
mergeMap( solution => {
return this.storage.ref( solution.image ).getDownloadURL()
.pipe( map( url => ({...solution,image: url}) ))
}),// stream of <Observable<Solution>
reduce( (acc: Solution[],value ) => {acc.push(value); return acc; },[]) // <Observable<Solution[]>
)
}
}
该问题可能与this.storage.ref( solution.image ).getDownloadURL()
有关。控制台中没有错误消息。更糟糕的是,有时它确实按预期工作。
我之前在使用 getDownloadURL
的 angularfire
管道时遇到了同样的问题:https://github.com/angular/angularfire/blob/master/docs/storage/storage.md#downloading-files
知道出了什么问题吗?
更新:可能与此问题有关:https://github.com/angular/angularfire/issues/2725
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。