在一个项目中,我为 SSR 安装了 Angular Universal,并使用 Firebase 托管和功能进行部署。
对于静态文本和图像资源,我在生产中获取了用于 SEO 的内容,但对于 API 请求,我在 app-root 中看不到 html 代码
我仍然使用解析器
用户服务
...
getUsers(): Observable<any> {
return this.http.get(this.baseUrlApi + '/api/user?limit=10', super.header(this.appId));
}
用户解析服务
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { Observable } from 'rxjs';
import { UserService } from '../../core/services/user.service';
@Injectable({
providedIn: 'root'
})
export class UserResolverService implements Resolve<any> {
constructor(private _userService: UserService) {}
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {
return this._userService.getUsers();
}
}
应用程序路由模块
...
{ path: 'display-api', loadChildren: () => import('./pages/page-display-api/page-display-api.module').then(m => m.PageDisplayApiModule), data: { preload: true },
resolve: {
users: UserResolverService
}
PageDisplayApiComponent
ngOnInit(): void {
this.users = this._route.snapshot.data['users'].data;
因此,用户在屏幕上显示得很好,但对于 SEO,app-root 中没有任何内容
谢谢您的回复
我不明白我已经被困了 4 天,尽管我什么也没做,但它仍然有效...... 现在可以了。哦
另一方面,我在 firebase 函数日志中遇到错误,如下: (尽管日志中出现此错误,它仍然有效)
ssr 错误:无法匹配任何路由。 URL 段:'index.html' 位于 router_ApplyRedirects.noMatchError (/workspace/dist/blog-iner-code/server/main.js:1:2464378) 位于 CatchSubscriber.expandSegmentGroup.pipe.pipe.e [作为选择器] (/工作区/dist/blog-iner-code/server/main.js:1:2464039) 在 CatchSubscriber.error (/workspace/dist/blog-iner-code/server/main.js:1:470673) 在 MapSubscriber._error (/workspace/dist/blog-iner-code/server/main.js:1:367848) 在 MapSubscriber.error (/workspace/dist/blog-iner-code/server/main.js:1:367633) 在 MapSubscriber ._error (/workspace/dist/blog-iner-code/server/main.js:1:367848) 在 MapSubscriber.error (/workspace/dist/blog-iner-code/server/main.js:1:367633)在 MapSubscriber._error (/workspace/dist/blog-iner-code/server/main.js:1:367848) 在 MapSubscriber.error (/workspace/dist/blog-iner-code/server/main.js:1: 367633)在 ThrowIfEmptySubscriber._error (/workspace/dist/blog-iner-code/server/main.js:1:367848)在resolvePromise(/workspace/dist/blog-iner-code/server/main.js:1): 1080094)在resolvePromise(/workspace/dist/blog-iner-code/server/main.js:1:1079071)在/workspace/dist/blog-iner-code/server/main.js:1:1081898在ZoneDelegate。 invokeTask (/workspace/dist/blog-iner-code/server/main.js:1:1071198) 在 Object.onInvokeTask (/workspace/dist/blog-iner-code/server/main.js:1:1542199) Zone.runTask (/workspace/dist/blog-iner-code/server/main.js:1:1063763) 处的 ZoneDelegate.invokeTask (/workspace/dist/blog-iner-code/server/main.js:1:1071088) )在drainMicroTaskQueue(/workspace/dist/blog-iner-code/server/main.js:1:1074806)在ZoneTask.invokeTask(/workspace/dist/blog-iner-code/server/main.js:1:1072847) )在 ZoneTask.options.useG.invoke (/workspace/dist/blog-iner-code/server/main.js:1:1072612)
我也遇到了完全相同的问题。有修复吗?