web-dev-qa-db-fra.com

Aucun fichier de travailleur de service ngsw.json/ngsw-worker.json généré lors de l'exécution de build --prod. Angular 5

Utiliser angular 5.1.2 Angular-cli 1.6.3

tous les fichiers sont jolie vanille. le dossier dist est créé

Mon ngsw-config.json

{
"index": "/index.html",
"assetGroups": [
    {
        "name": "app",
        "installMode": "prefetch",
        "resources": {
            "files": [
                "/favicon.ico",
                "/index.html"
            ],
            "versionedFiles": [
                "/*.bundle.css",
                "/*.bundle.js",
                "/*.chunk.js"
            ]
        }
    },
    {
        "name": "assets",
        "installMode": "lazy",
        "updateMode": "prefetch",
        "resources": {
            "files": [
                "/assets/**"
            ]
        }
    }]   

}

my app.module.ts utilise

  ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production })

j'utilise Vanilla environment.ts et environment.prod.ts

main.ts

import './polyfills.ts';
import {enableProdMode} from '@angular/core';
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';

import {AppModule} from './app/app.module';
import {environment} from './environments/environment';

if (environment.production) {
enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule)
.then(() => {
if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register('ngsw-worker.js');
}

})
.catch(err => console.log(err));

Vous ne savez pas quoi vérifier

6
user2182570

Ajoutez-vous la propriété serviceWorker à apps première entrée dans .angular-cli.json? Si ce n'est pas le cas, angular-cli ne l'a pas construit.

"apps": [
  {
    ...
    "serviceWorker": true
  }
}

EDITDepuis décembre 2018, .angular-cli.json est maintenant angular.json , et le format de serviceWorker est maintenant:

{
    ...
    "projects": {
         "my-project-name": {
             "architect": {
                 "build": {
                     "configurations": {
                        "production": {
                           "serviceWorker": true
                        }
                     }
                 }
             }
         }
    }

Vous devrez spécifier serviceWorker: true pour chaque configuration dans laquelle vous souhaitez que l'agent de service soit.

7
kklimczak

J'ai eu le même problème. Il s'avère que j'utilisais un vieux paquet

"@angular-devkit/build-angular": "~0.6.6"

Cela devrait être 

"@angular-devkit/build-angular": "~0.10.0",

après cela, le technicien est copié

Veillez également à utiliser les dernières Angular 7 et lateset Angular CLI

6
Johansrk

Il semble qu'il manque un espace dans app.module.ts

J'avais: Environment.production? ServiceWorkerModule.register ('/ ngsw-worker.js'): []

changé en: environment.production? ServiceWorkerModule.register ('/ ngsw-worker.js'): []

1
user2182570

Après une longue recherche, nous avons découvert que le drapeau --prod manquant dans notre version rend le problème problématique. C’est exactement celui-ci qui produit les fichiers service-worker et aucun indicateur de construction supplémentaire n’est capable de le faire (de même pour uglifying et le uglifyer était la raison pour laquelle nous avions échangé l’indicateur --build contre --env = build plus tôt). Plus d’informations sur ce qui se passe sur le drapeau --build se trouvent ici: Angular 2 avec CLI - build for production

0
Nadine