我的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不会触发我的通用应用程序?
谢谢!