webpack5,热更新失效

本文介绍如何正确配置Webpack与Babel来确保IE11浏览器的支持,包括排除core-js等不需要转译的模块,以及解决webpack5热更新失效的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用webpack和babel编译代码,支持IE11的时候报错,
在这里插入图片描述

在这里插入图片描述
原因就是,在babel转译的时候没有core-js排除,babel吧core-js也给转译了一遍出现了错误,core-js不需要babel的再次转译。

检查一下webpack的babel-loader的配置,看看有没有吧core-js给排除掉。

	module: {
		rules: [
			{
				test: /\.m?js$/,
				// 之前是因为这里的正则表达式写错了。
				// exclude: /(node_modules[\\/][^dtc]|bower_components)/,
				exclude: [{
					and: [/node_modules[\\/]/], //排除node_modules文件夹下面的所有文件
					not: [
						// 但是不排除下面的文件,因为他们使用了IE11不支持的语法。
						/debug[\\/]/,
					]
				}],
				use: {
					loader: 'babel-loader',
					options: {
						cacheDirectory: true,
					},
				}
			},

webpack5热更新失效

webpack5通过target告知 webpack 目标(target)环境。默认值为 “browserslist”,如果没有找到 browserslist 的配置,则默认为 “web”,所以删除browerslist 相关配置的时候,热更新也会恢复。

这部分应该是webpack 什么的有bug 相关issue
暂时可以这么写

// webpack.config.js
  target: process.env.NODE_ENV === "development" ? "web" : "browserslist",
### Webpack HMR 热加载失效的原因及解决方案 #### 1. **路径配置错误** 如果 `devServer` 的配置中,HMR 客户端的连接地址不正确,可能会导致热更新失败。例如,在某些情况下,默认的 `/__webpack_hmr` 路径可能无法正常工作[^3]。可以通过修改 `devServer` 配置中的 `hotOnly` 或者调整客户端代码来解决问题。 修改后的代码如下所示: ```javascript const hotClient = require('webpack-hot-middleware/client?path=http://your-domain.com/__webpack_hmr&noInfo=true&reload=true'); ``` #### 2. **未启用 HMR 功能** 默认情况下,部分文件类型(如 HTML 和 JavaScript 文件)并不支持 HMR 功能[^4]。对于这些文件,需要手动添加对 HMR 的支持。以下是针对不同类型的文件的具体处理方法: - **JavaScript 文件** 对于 JavaScript 文件,可以在入口文件中引入 `module.hot.accept()` 方法以实现模块级别的热替换。 ```javascript if (module.hot) { module.hot.accept('./path/to/module', () => { console.log('Module updated via HMR!'); }); } ``` - **HTML 文件** HTML 文件默认不会触发 HMR 更新。为了使 HTML 文件能够响应更改并重新渲染页面,需将其作为入口之一加入到 Webpack 配置中。 ```javascript entry: { main: ['./src/index.js', './src/index.html'] }, plugins: [ new HtmlWebpackPlugin({ template: './src/index.html' }) ] ``` #### 3. **依赖版本冲突** 使用不同的插件或中间件时,可能存在版本兼容性问题。例如,`webpack-dev-server` 和 `webpack-hot-middleware` 可能由于版本差异而导致 HMR 失效。建议检查当前使用的 Webpack 版本以及相关插件的文档说明,确保它们之间的兼容性[^1]。 ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值