首页 > 解决方案 > 如何控制 Angular 决定预渲染的路由?

问题描述

我正在尝试使用ng run [myAppName]:prerender. 我只想预呈现的内容,/因为不需要预呈现其他路线。尽管它找到了一种方法来预渲染我的 angular.json 配置中未包含的其他路由。

Angular.json

    "prerender": {
      "builder": "@nguniversal/builders:prerender",
      "options": {
        "browserTarget": "[myApp]:build:production",
        "serverTarget": "[myApp]:server:production",
        "routes": [
          "/" // <--- One route listed...
        ]
      },
      "configurations": {
        "production": {}
      }
    }

使用上面的配置,它仍然会预渲染 16 个其他路由,(例如 /my-other-route)

有没有办法只能预渲染/页面?

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.901.10
@angular-devkit/build-angular     0.901.10
@angular-devkit/build-optimizer   0.901.10
@angular-devkit/build-webpack     0.901.10
@angular-devkit/core              9.1.10
@angular-devkit/schematics        9.1.10
@angular/cdk                      9.2.4
@angular/cli                      9.1.10
@angular/fire                     6.0.2
@angular/google-maps              10.0.2
@angular/material                 9.2.4
@angular/platform-server          9.1.12
@ngtools/webpack                  9.1.10
@nguniversal/builders             9.1.1
@nguniversal/common               9.1.1
@nguniversal/express-engine       9.1.1
@schematics/angular               9.1.10
@schematics/update                0.901.10
rxjs                              6.5.5
typescript                        3.8.3
webpack                           4.42.0

标签: angularserver-side-renderingprerender

解决方案


尝试更新到 >= Angular 11.1 并添加"guessRoutes": false到 angular.json。

...
"routes": [
    "/"
],
"guessRoutes": false

请参阅:https ://github.com/angular/universal/blob/3e0efbeb2ad490caead49d53809af97ace6e03a7/modules/builders/src/prerender/schema.json#L30:L34


推荐阅读