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
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.
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
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'): []
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 .