Angular 10 ssr 不适用于请求 API

问题描述 投票:0回答:2

在一个项目中,我为 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 中没有任何内容

angular server-side-rendering
2个回答
0
投票

谢谢您的回复

我不明白我已经被困了 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)


0
投票

我也遇到了完全相同的问题。有修复吗?

© www.soinside.com 2019 - 2024. All rights reserved.