Угловой 7 - Ленивая загрузка не работает с обслуживающим работником - PullRequest
0 голосов
/ 13 января 2019

Я развернул приложение node.js / Angular на экземпляре AWS EC2 Ubuntu. При открытии проекта в браузере все лениво загруженные модули не работают. Модули никогда не завершают загрузку, хотя они начинают загрузку.


Странная вещь в том, что при развертывании приложения в Heroku или при тестировании на localhost все работает нормально. (В производственной сборке).

Вот как выглядит вкладка сети при развертывании в экземпляре AWS EC2 (без загрузки ленивых модулей): network activity

Вот как выглядит вкладка сети при развертывании в Heroku (работает нормально): network activity

Вот как выглядит вкладка сети при запуске на localhost (работает нормально): network activity


Ленивая загрузка работает только при удалении моего сервисного работника.

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"
      }
    }
  ]
}

1 Ответ

0 голосов
/ 18 января 2019

удалите вашу предварительную выборку updateMode из ваших активов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...