【问题标题】:Angular service worker offline caching is not working when I've deployed in server当我在服务器中部署时,Angular Service Worker 离线缓存不起作用
【发布时间】:2019-06-10 05:34:10
【问题描述】:

当我使用 angular/pwa 构建我的 Angular 项目并使用 http-server 在本地服务器上对其进行测试时,它按预期工作。甚至离线缓存在本地也能正常工作。

但是当我在服务器中部署相同的东西时,我可以在任何设备上安装和运行它,但我离线时无法打开。

service-workers 没有缓存 angular pwa 中的内容

这是我的 app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { GetchucknorrisjokesService } from './getchucknorrisjokes.service';
import { ServiceWorkerModule } from '@angular/service-worker';
import { environment } from '../environments/environment';

@NgModule({
  declarations: [
    AppComponent,
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    HttpClientModule,
    ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production })
  ],
  providers: [ GetchucknorrisjokesService ],
  bootstrap: [AppComponent]
})
export class AppModule { }

这是我的 ngsw-config.json 文件

{
  "$schema": "./node_modules/@angular/service-worker/config/schema.json",
  "index": "/index.html",
  "assetGroups": [
    {
      "name": "app",
      "installMode": "prefetch",
      "resources": {
        "files": [
          "/favicon.ico",
          "/index.html",
          "/*.css",
          "/*.js"
        ]
      }
    }, {
      "name": "assets",
      "installMode": "lazy",
      "updateMode": "prefetch",
      "resources": {
        "files": [
          "/assets/**",
          "/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)"
        ]
      }
    }
  ]
}

【问题讨论】:

  • 你能上传你如何在你的模块中配置 sw 的代码吗?
  • 嘿@Tony Ngo 我已经上传了app.module.ts

标签: javascript angular typescript service-worker progressive-web-apps


【解决方案1】:

通过删除 $schema 来更新你的服务工作者,我的配置和你的一样

{
  "index": "/index.html",
  "assetGroups": [
    {
      "name": "app",
      "installMode": "prefetch",
      "resources": {
        "files": [
          "/favicon.ico",
          "/index.html",
          "/*.css",
          "/*.js"
        ]
      }
    }, {
      "name": "assets",
      "installMode": "lazy",
      "updateMode": "prefetch",
      "resources": {
        "files": [
          "/assets/**",
          "/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)"
        ]
      }
    }
  ]
}

您遇到了问题,因为当您构建到生产模式时,您的代码正在寻找此文件 ./node_modules/@angular/service-worker/config/schema.json

所以你的 Service Worker 将无法工作

【讨论】:

  • 我删除了 $schema 并重新上传了它。现在一切正常
猜你喜欢
  • 2019-12-19
  • 1970-01-01
  • 2023-01-19
  • 2019-07-05
  • 1970-01-01
  • 2017-12-26
  • 2020-10-27
  • 2017-12-24
  • 2021-02-22
相关资源
最近更新 更多