http-server net 提供新鲜的 js 文件

http-server net serving the fresh js file

我之前没有用过http-server npm模块!

我刚刚开始使用 Service Worker,方法是使用 this blog as a source

创建示例应用程序

本文作者使用了http-server来演示service worker!

从博客中,我复制了代码片段以检查是否支持 chrome

const check = () => {
    if (!('serviceWorker' in navigator)) {
      throw new Error('No Service Worker support!')
    }
    if (!('PushManager' in window)) {
      throw new Error('No Push API Support!')
    }
    console.log('Everything works fine')
  }
  const main = () => {
    check()
  }
  main()

注意 console.log('Everything works fine')

现在,在我继续文章的过程中,我按照指示将我的 main.js 更改为

const check = () => {
    if (!('serviceWorker' in navigator)) {
      throw new Error('No Service Worker support!')
    }
    if (!('PushManager' in window)) {
      throw new Error('No Push API Support!')
    }
    console.log(`Browser supports Pushmanager and Service worker`)
  }

  // Async so we can use await 
  const  main = async () => {
    check()
    const swRegistration = await registerServiceWorker();
  }


  //To run service worker we need to first register service worker 
  //Registering Service Worker
  const registerServiceWorker = async () => {
    const swRegistration = await navigator.serviceWorker.register('service.js'); //notice the file name
    return swRegistration;
}

但是当我进入该页面时,它会从我们在控制台中的第一个代码片段中不断记录这个

Everything works fine

我检查了 main.js,服务器似乎仍在为以前的 main.js 而不是新服务器提供服务。

如果我手动转到我的文件并在没有服务器的情况下打开它,main.js 会显示我的新代码更改。

我试过关闭服务器(使用 ctrl/cmd + c)并重新启动它,但没有帮助。

有人可以帮我解决吗?

看起来 http-server 告诉浏览器 cache pages for an hour by default:

-c Set cache time (in seconds) for cache-control max-age header, e.g. -c10 for 10 seconds (defaults to '3600'). To disable caching, use -c-1.

使用 http-server -c-1 重新启动服务器,然后在浏览器中进行硬刷新(Ctrl/Cmd+Shift+R 在 Firefox 中或 Chrome).