vue 插件 pwa sw.js 未找到

Posted

技术标签:

【中文标题】vue 插件 pwa sw.js 未找到【英文标题】:vue plugin pwa sw.js not found 【发布时间】:2021-06-23 04:50:10 【问题描述】:

我有 1 个使用 vue pwa 插件的应用,效果很好。

应用程序的 vuejs 配置如下所示:

const WebpackNotifierPlugin = require('webpack-notifier')

module.exports = 
  lintOnSave: false,
  css: 
    loaderOptions: 
      sass: 
        implementation: require('sass')
      
    
  ,
  transpileDependencies: [
    'vuex-module-decorators',
    'vuex-persist'
  ],
  pwa: 
    name: 'MyApp',
    themeColor: '#000000',
    msTileColor: '#000000',
    appleMobileWebAppCapable: 'yes',
    appleMobileWebAppStatusBarStyle: 'black',

    // configure the workbox plugin
    workboxPluginMode: 'InjectManifest',
    workboxOptions: 
      // swSrc is required in InjectManifest mode.
      swSrc: 'dev/sw.js',
      // ...other Workbox options...
    
  ,
  configureWebpack: 
    devServer:
      historyApiFallback: true,
    ,
    plugins: [
      new WebpackNotifierPlugin(),
    ],
    optimization: 
      runtimeChunk: 'single',
      splitChunks: 
        chunks: 'all',
        maxInitialRequests: 3,
        minSize: 0,
        cacheGroups: 
          vendor: 
            test: /[\\/]node_modules[\\/]/,
            name(module) 
              const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1];
              return `npm.$packageName.replace('@', '')`;
            ,
          ,
        ,
      ,
    ,
  ,

我有另一个应用程序,完全相同,vue2,beufy 等。我通过 vue pwa 插件安装了相同的东西,配置看起来完全相同,但是当我运行构建时它说它找不到 sw.js文件:

Error: ENOENT: no such file or directory, open 'dev/sw.js'

我创建了一个超级基本的 vue 应用程序,在这里做同样的事情:https://github.com/johndcarmichael/vue-pwa-sw-not-found

还有其他人遇到过这个问题吗?您是如何解决的?

【问题讨论】:

【参考方案1】:

您的项目中没有dev/sw.js,正如您在swSrc 中设置的那样。 InjectManifest 表示获取此sw.js 源文件并将预缓存清单写入其中,生成最终的service-worker.js 文件。

【讨论】:

好的,但是你有可以与这个插件一起使用的示例服务工作者文件的链接吗? cli.vuejs.org/core-plugins/pwa.html#example-configuration不提供一个 @John 只需删除 workboxPluginModeworkboxOptions。 cli-plugin-pwa 将使用合理的默认值。 非常感谢!我没有从文档中得到。现在一切正常!不知道原始应用程序是如何构建的,但是由于我使用的是默认设置,因此我从两个配置中删除了这些选项,一切都很好。

以上是关于vue 插件 pwa sw.js 未找到的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js PWA 插件在部署到子文件夹时不加载 service-worker.js (Github Pages)

如何使用 spa-prerender 插件在 VUE 中预渲染“*”(未找到)页面

将 PWA 安装到主屏幕后,我的通知徽章图标未显示

PWA 使用和配置说明

如何将 Vue 2 网站转换为 PWA 网络应用程序?

Vue项目PWA化