Ich erhalte den folgenden Fehler
ERROR Error: Uncaught (in promise): TypeError: Failed to register a ServiceWorker: A bad HTTP response code (404) was received when fetching the script.
TypeError: Failed to register a ServiceWorker: A bad HTTP response code (404) was received when fetching the script.
Ich habe die Eingabeaufforderung "ng add @ angular/pwa" verwendet, um meine Datei "ngsw-config.json" und "manifest" hinzuzufügen. Diese Eingabeaufforderung fügte auch meine "serviceWorker": true-Anweisung und mein Register mit der Umgebung zu "app.module.ts" hinzu
Nachdem ich überprüft hatte, ob alles korrekt hinzugefügt wurde, führte ich den Befehl "ng build --prod" aus, der erfolgreich erstellt wurde, und die angezeigte dist wurde erstellt dist folder
Dann habe ich "ng serve --prod" ausgeführt und erhalte die im Bild gezeigten Fehler Fehler
Zeile, die in app.module.ts verwendet wird
ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production })
ngsw-Konfiguration:
{
"index": "/",
"assetGroups": [
{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": [
"/favicon.ico",
"/index.html",
"/*.css",
"/*.js"
]
}
}, {
"name": "icons",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/icons/**"
]
}
}
]
}
Platzierung von serviceWorker true in angular.json:
"configurations": {
"production": {
"serviceWorker": true,
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
Da Sie das Stammverzeichnis als dist-Ordner angegeben haben, muss sich Ihre Datei service-worker.js
Im dist-Ordner befinden, nachdem Sie das Skript ng build
Ausgeführt haben.
Fügen Sie Ihrem package.json-Skriptobjekt "precache": "sw-precache --verbose --config=sw-precache-config.js"
Hinzu.
Führen Sie dann Folgendes aus: ng build --prod --aot
, Dann npm run precache
. Jetzt wäre Ihre service-worker.js-Datei im dist-Ordner vorhanden.
Da der Compiler angular Ihren App-Code in js-Dateien kompiliert und im dist-Ordner gespeichert hat, müssen Sie Ihre App jetzt aus dem dist-Ordner bereitstellen.
Die Standardeinstellung ng serve
Unterstützt dies jedoch nicht. Ich schlage vor, Sie verwenden http-server
. npm install http-server -g
. Dann http-server ./dist -o
. Dadurch wird Ihre App im Standardbrowser geöffnet.