Angular2 +:在根范围

时间:2017-06-14 23:11:00

标签: angular service-worker

我在Angular2 +(v.4.1.0约)应用上写了一个非常基本的服务工作者。 sw.js文件位于src目录。

文件夹结构类似于:

src/
   app/
   assets/
   environments/
   favicon.ico
   index.html
   sw.js
   styles.css

我正在尝试使用index.html中的以下代码注册它:

<body>
  <app-root>Cargando...</app-root>
  <script>
      if('serviceWorker' in navigator){
      navigator.serviceWorker
        .register('/sw.js',{scope: './'})
        .then(() => {
          console.log("Service Worker Registered. ");
        })
        .catch((err) => {
          console.log("Service Worker failed to register: " + err);
        })
      } else {
        console.log("Service what?");
      }
  </script>
</body>

问题是,当我运行开发服务器时(我正在使用Angular CLI,所以webkit-dev-server我猜),它找不到sw.js(它是否在编译中“包含”?)。但是,如果我将其添加为资产,我可以使用navigator.serviceWorker.register('assets/sw.js')成功注册,但当我想成为/assets/时,SW范围现在更改为/

如何在根范围内注册Service Worker? 谢谢。

1 个答案:

答案 0 :(得分:1)

如果您希望您的服务工作文件sw.js保留在src目录中并仍然作为资产包含在内,则必须将其添加到资产下的.angular-cli.json

.angular-cli.json

  (...)
  "outDir": "dist",
  "assets": [
    "assets",
    "sw.js"
  ],
  "index": "index.html",
  (...)