Угловой 7 - Ленивая загрузка не работает с обслуживающим работником
Я развернул свое приложение node.js / Angular на экземпляре AWS EC2 Ubuntu. При открытии проекта в браузере все лениво загруженные модули не работают. Модули никогда не завершают загрузку, хотя они начинают загрузку.
Странная вещь в этом заключается в том, что при развертывании приложения в Heroku или тестировании с помощью localhost все работает нормально. (В производственной сборке).
Вот как выглядит вкладка сети при развертывании в экземпляре AWS EC2 (без загрузки ленивых модулей):
Вот как выглядит вкладка сети при развертывании в Heroku (работает нормально):
Вот как выглядит вкладка сети при запуске на localhost (работает нормально):
Ленивая загрузка работает только при удалении моего сервисного работника.
app.routes.ts
export const routes: Routes = [
{
path: 'auth',
loadChildren: './auth/auth.module#AuthModule',
},
{
path: 'seller',
canActivate: [guards.AuthGuard, guards.SellerGuard],
loadChildren: './features/seller/seller.module#SellerModule',
},
{
path: 'shopping',
loadChildren: './features/shopping/shopping.module#ShoppingModule',
},
{
path: 'products',
loadChildren: './features/products/products.module#ProductsModule',
},
{
path: 'me',
canActivate: [guards.AuthGuard],
loadChildren: './features/me/me.module#MeModule',
},
{
path: 'search',
loadChildren: './features/search/search.module#SearchModule',
},
{
path: 'business',
loadChildren: './features/business/business.module#BusinessModule',
},
{
path: 'users',
loadChildren: './features/users/users.module#UsersModule',
},
{
path: '**',
redirectTo: ''
},
];
Узел-server.js
// many other configurations
app.use('/api', api)
app.get('*', (req, res) => {
res.status(200).sendFile(path.join(__dirname, './client/index.html'))
})
app.listen(port, () => {
console.log(`• Server launched on port`, port)
console.log(`• Server running in ${prod ? ' production' : ' development'} mode`)
console.log(`• • •`)
})
Я не могу опубликовать подробный код, потому что это очень большой проект, и я не знаю, что вызывает ошибку. Итак, дайте мне знать, если я должен добавить некоторые конкретные файлы.
Реализация сервисного работника
app.module.ts
@NgModule({
// ...
imports: [
ServiceWorkerModule.register('ngsw-worker.js', {
enabled: environment.production
})
],
)}
// ...
ngsw-config.json
{
"index": "/index.html",
"assetGroups": [
{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": [
"/favicon.ico",
"/index.html",
"index.html",
"/*.css",
"/*.js"
]
}
},
{
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**"
]
}
}
],
"dataGroups": [
{
"name": "",
"urls": [
"https://www.some-domain.com/api/*",
],
"cacheConfig": {
"maxSize": "15",
"maxAge": "6h",
"timeout": "10s",
"strategy": "performance"
}
}
]
}