Angular Universal(Angular 5.2.11)Web应用程序根路由不会在节点服务器中呈现

时间:2018-07-13 13:38:12

标签: angular angular5 serverside-rendering angular-universal

我的Angular Universal应用路由器出现异常行为。我目前正在使用Angular 5.2.11。

如果我尝试访问“ https://mywebsite.com”,那么我的通用应用程序将不会在服务器中呈现相应的视图。我刚刚收到了原始的index.html文件。

奇怪的是,如果我尝试直接访问所有其他路由(例如“ https://mywebsite.com/foo”),则我的服务器会检测到它们并完美呈现它们,并且内容对于Web爬网程序可见。

问题是,如果我的根路由使用我的原始index.html文件而不是使用标题,描述,标签,关键字,链接,标题等构造所需的页面,则整个Web应用程序将变得不可爬网。

我正在使用延迟加载的模块,但是我认为这不是问题,因为如果我访问另一条路由(如上文所述),它们将正常加载。

我的路由器应用程序的路由器配置如下:

const routes: Routes = [
  {
    path: '',
    component: GenOutletComponent,
    children: [
      {
        path: '',
        loadChildren: 'app/main-site-app/main-site-app.module#MainSiteAppModule'
      },
      {
        path: 'inexistent-page',
        component: InexistentPageComponent
      },
      {
        path: '**',
        redirectTo: 'inexistent-page'
      }
    ]
  }
]

@NgModule({
  declarations: [
    InexistentPageComponent
  ],
  imports: [
    RouterModule.forRoot(routes, {
      paramsInheritanceStrategy: 'always',
      initialNavigation: 'enabled'
    })
  ],
  exports: [
    RouterModule
  ]
})

我的节点服务器配置如下,用于服务器端渲染:

require('zone.js/dist/zone-node')
require('reflect-metadata')

const ngExpressEngine = require('@nguniversal/express-engine').ngExpressEngine
const { enableProdMode } = require('@angular/core')

enableProdMode()

const {
  ServerAppModuleNgFactory,
  LAZY_MODULE_MAP
} = require('./dist-server/main.bundle')

const {
  provideModuleMap
} = require('@nguniversal/module-map-ngfactory-loader')

const provider = provideModuleMap(LAZY_MODULE_MAP)

app.engine(
  'html',
  ngExpressEngine({
    bootstrap: ServerAppModuleNgFactory,
    providers: [provider]
  })
)

app.set('view engine', 'html')
app.set('views', 'dist')

app.get('*', (req, res) => {
    res.render('index', {req, res})
})

有人知道为什么会这样吗?为什么我的根站点URL不会触发我的通用应用程序?

谢谢!

0 个答案:

没有答案