关于vue-cli3+webpack热更新失效及解决

关于vue-cli3+webpack热更新失效及解决,我将为您提供完整的攻略。

问题描述

在使用vue-cli3+webpack进行开发时,有时候会发现修改代码后页面没有自动刷新,导致热更新失效。这是因为webpack-dev-server的默认watch机制有问题,解决这个问题可以采用以下方案。

解决方案

方案一:关闭webpack的watch机制,使用webpack-dev-middleware手动编译打包文件

在vue.config.js文件中进行如下配置:

const webpack = require('webpack')

module.exports = {
  configureWebpack: config => {
    if (process.env.NODE_ENV === 'development') {
      config.plugins.push(new webpack.HotModuleReplacementPlugin())
    }
  },
  devServer: {
    watchOptions: {
      ignored: /node_modules/,
      aggregateTimeout: 300,
      poll: 1000
    },
    before(app, server, compiler) {
      compiler.plugin('done', () => {
        const memFs = server._memFs = server._memFs || compiler.outputFileSystem
        Object.keys(memFs.data).forEach((filename) => {
          if (/\.html$/.test(filename)) {
            const rawData = memFs.data[filename]
            const data = (rawData instanceof Buffer) ? rawData.toString('utf-8') : rawData
            server.middleware.waitUntilValid(() => {
              server.middleware.invalidate()
              server.middleware.waitUntilValid(() => {
                memFs.writeFileSync(filename, data)
              })
            })
          }
        })
      })
    },
    hot: true
  }
}

这里我们做了一些打包编译的优化,配合webpack-dev-middleware手动编译打包文件。注意,如果发现编译过程中提示npm run serve编译错误无法解析.vue文件,需要在文件中加入这些代码:

const VueLoaderPlugin = require('vue-loader/lib/plugin')

module.exports = {
  configureWebpack: {
    plugins: [
      new VueLoaderPlugin()
    ]
  }
}

方案二:修改webpack-dev-server的watchOptions配置

在vue.config.js文件中进行如下配置:

module.exports = {
  devServer: {
    watchOptions: {
      ignored: /node_modules/,
      aggregateTimeout: 300,
      poll: 1000
    },
    hot: true,
    inline: true,
    overlay: true
  }
}

重点在于watchOptions的配置,可以调整ignored属性来忽略不需要watch的目录文件,aggregateTimeout和poll值的调整可以影响文件监控的频率。

示例说明

示例一:采用方案一解决vue-cli3+webpack热更新失效问题

在vue.config.js文件中添加以上方案一的代码,并启动项目。修改代码后,保存后自动刷新页面,热更新生效。

示例二:采用方案二解决vue-cli3+webpack热更新失效问题

在vue.config.js文件中添加以上方案二的代码,并启动项目。修改代码后,保存后自动刷新页面,热更新生效。

以上就是关于vue-cli3+webpack热更新失效及解决的完整攻略,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于vue-cli3+webpack热更新失效及解决 - Python技术站

(1)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法

    如果您想在VSCode中快速地生成.vue文件的模板代码,可以使用Vue VSCode Snippets插件。这个插件提供了一系列可以用于在Vue项目中快速生成模板代码的人性化代码片段,例如template、script等。不仅如此,这个插件还支持自定义模板,您可以修改定义对于其他模板的方法,以实现更加高效的开发。 下面是详细的操作过程: 安装Vue VSC…

    Vue 2023年5月28日
    00
  • 构建Vue大型应用的10个最佳实践(小结)

    当我们在构建大型Vue应用时,需要注意一些最佳实践,以确保应用程序的可维护性、可扩展性和性能。 以下是构建Vue大型应用的10个最佳实践: 组件化设计思想 Vue是一个组件化框架,充分利用它的能力可以将UI划分为独立的、可重用的组件。将业务逻辑和UI分离,使每个组件都可以独立开发、测试和维护。 例如,假设我们正在构建一个电子商务网站,并且需要显示各种商品列表…

    Vue 2023年5月27日
    00
  • vue 实现模糊检索并根据其他字符的首字母顺序排列

    实现模糊检索并根据其他字符的首字母顺序排列是前端开发中比较常见的需求之一,在 Vue 中也有很好的实现方式。 1.实现模糊检索功能 实现模糊检索的核心点是在数据源上进行筛选。假设我们有一个表格数据源: [ { name: ‘张三’, age: 21 }, { name: ‘李四’, age: 22 }, { name: ‘王五’, age: 23 }, { …

    Vue 2023年5月27日
    00
  • vue2.0 datepicker使用方法

    Vue2.0 Datepicker使用方法 简介 Vue2.0 Datepicker是一个基于Vue2.0和moment.js的日期选择器组件,它可以帮助你方便地选择日期并将所选日期返回给你的应用程序。 安装 安装Vue2.0 Datepicker很简单,只需要使用npm命令即可: npm install vue2-datepicker –save 使用 …

    Vue 2023年5月29日
    00
  • vue-element-admin 登陆及目录权限控制的实现

    下面为你详细讲解“vue-element-admin 登陆及目录权限控制的实现”的完整攻略。 1. 登陆流程 要实现登陆流程,首先需要安装相关依赖包: npm install axios js-cookie 其中,axios 是一个基于 Promise 的 HTTP 库,可用于浏览器和 Node.js,同时也是 Vue 官方推荐的 HTTP 请求库;js-c…

    Vue 2023年5月28日
    00
  • 解决vue select当前value没有更新到vue对象属性的问题

    我将为您详细讲解“解决Vue Select当前Value没有更新到Vue对象属性的问题”的完整攻略。 简介 在Vue开发中,我们通常会使用Vue Select组件来实现下拉选择框。但是在使用过程中,会发现Vue Select的value属性不能够及时更新到Vue对象中的属性,导致无法实现数据的双向绑定。本文将为大家提供解决这个问题的完整攻略。 解决方案 解决…

    Vue 2023年5月28日
    00
  • 使用vue cli4.x搭建vue项目的过程详解

    使用vue cli4.x搭建vue项目的过程详解 在搭建Vue项目时,Vue CLI是最好的选择之一。下面将为您介绍使用Vue CLI 4.x搭建Vue项目的过程。 安装Vue CLI 4.x 首先要确保已经安装了Node.js 环境。执行以下命令来安装Vue CLI。 npm install -g @vue/cli 安装完毕后,使用以下命令确认Vue CL…

    Vue 2023年5月27日
    00
  • 10分钟了解Vue3递归组件的用法

    10分钟了解Vue3递归组件的用法 递归组件在前端开发中常用于处理层级比较深的数据结构。Vue3提供了一些新的特性,让递归组件的实现更加简单易用。 递归组件是什么? 递归组件是指一个组件可以在它的模板中调用自己。这种组件通常用于处理树形结构或列表的情况。 实现递归组件的步骤 在Vue3中,实现递归组件需要 following 步骤: 创建组件; 在组件的 t…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部