Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >解决线上域名Webpack热更新失败问题

解决线上域名Webpack热更新失败问题

原创
作者头像
DamonLiu
发布于 2022-08-21 04:14:51
发布于 2022-08-21 04:14:51
2.6K00
代码可运行
举报
文章被收录于专栏:知识技能知识技能
运行总次数:0
代码可运行

很多业务的前端页面开发是用直接代理开发环境的js静态资源到本地资源的方式。静态资源通过代理简单配置即可代理到本地,但是WebSocket代理不一定能成功

通过查看react-scripts包中webpackDevServer的配置

可以通过设置环境变量配置WebSocket的地址,修改package.json中scripts如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"start": "cross-env DISABLE_ESLINT_PLUGIN=true PORT=3009 WDS_SOCKET_HOST=localhost WDS_SOCKET_PORT=3009 NODE_ENV=development react-app-rewired start",

WebSocket连接到本地后,又出现如下错误

查了资料是react-scripts依赖的react-error-overlay版本过高的问题,需要限制到6.0.9版本。修改package.json,在devDependencies增加"react-error-overlay": "6.0.9",根大括号增加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"resolutions": {
    "react-error-overlay": "6.0.9"
}

然后安装依赖

重启webpack,刷新页面,修改业务代码

push的更新信息,还是开发环境的地址,我们在react-app-rewired的配置文件config-overrides.js中添加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (process.env.NODE_ENV === 'development') {
  newConfig.output.publicPath = `http://localhost:${process.env.PORT}/`;
}

设置资源基础路径为本地服务地址

重启webpack,刷新页面,修改业务代码

跨域的错误,在config-overrides.js中配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
devServer: function(configFunction) {
  // Return the replacement function for create-react-app to use to generate the Webpack
  // Development Server config. "configFunction" is the function that would normally have
  // been used to generate the Webpack Development server config - you can use it to create
  // a starting configuration to then modify instead of having to create a config from scratch.
  return function(proxy, allowedHost) {
    // Create the default config by calling configFunction with the proxy/allowedHost parameters
    const config = configFunction(proxy, allowedHost);

    config.headers = {
      "Access-Control-Allow-Credentials": "true",
      'Access-Control-Allow-Origin': '*',
    };

    // Return your customised Webpack Development Server config.
    return config;
  };
},

重启webpack,刷新页面,修改业务代码

热更新能力恢复正常!

最后总结一下配置清单

1. 配置WebSocket地址到本地 2. 限制依赖react-error-overlay版本 3. 设置webpack配置output.publicPath为本地服务地址 4. 配置DevServer允许跨域headers

有了热更新,大家一定可以早半个小时下班 ^_^

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Ant Design 按需加载css
1.然后在项目根目录创建一个 config-overrides.js 用于修改默认配置。
切图仔
2022/09/08
9480
react 脚手架生成的项目执行什么命令可以展示 webpack 配置?
在 React 脚手架(如 create-react-app)生成的项目中,Webpack 的配置是默认隐藏的,因为它使用了一个名为 react-scripts 的包来处理所有的构建和启动任务。然而,如果你想查看或修改 Webpack 的配置,有几种方法可以做到这一点:
蓓蕾心晴
2024/05/09
3730
【原创】不想eject,还咋修改create-react-app的配置?
许多刚开始接触create-react-app框架的同学,不免都会有个疑问:如何在不执行eject操作的同时,修改create-react-app的配置。今天胡哥就来带大家一起来看看这个问题~
胡哥有话说
2021/04/19
3K0
React菜鸟进阶史之构建项目
create-react-app 是React 官方推荐的,默认支持的,无配置的项目构建工具之一。
Fate03
2021/09/03
7840
React + Typescript: 开启 HMR/Hot Loader
在项目根目录创建一个 config-overrides.js 文件, 是项目的根目录,不是 src 文件夹, 要放到和 package.json 同级。
szhshp
2022/09/21
4220
使用 Electron 和 React 构建桌面应用
Electron 是一个使用 HTML、CSS、JavaScript 构建跨平台桌面应用的框架。
Kindem
2022/08/12
4.1K0
使用 Electron 和 React 构建桌面应用
2022年了你必须要学会搭建微前端项目及部署方式
一、微前端简介 微前端是一种类似于微服务的架构,它将微服务的理念应用于浏览器端,即将 Web 应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。各个前端应用可以独立运行、独立开发、独立部署。 微前端的好处 应用自治。只需要遵循统一的接口规范或者框架,以便于系统集成到一起,相互之间是不存在依赖关系的。 单一职责。每个前端应用可以只关注于自己所需要完成的功能。 技术栈无关。你可以使用 Angular 的同时,又可以使用 React 和 Vue。 微前端的缺点 应用的拆分基础依赖于基础设施的构建
前端进阶之旅
2022/01/06
2.4K0
2022年了你必须要学会搭建微前端项目及部署方式
【Scratch入门到精通】使用CRA搭建项目
本文教你从0到1教你,如何使用 create-react-app 搭建scratch项目,实现简基础的积木编程与舞台渲染效果。Github项目usetools/scratch-example/v1.0.0。
Yorkyu
2022/03/22
1.6K0
【Scratch入门到精通】使用CRA搭建项目
React + Redux 开启 HMR/Hot Loader
最近在用 React 以及 Redux 写几个项目, 使用的是官方 Create-React-App 的脚手架, 默认没有开启 HMR, 每次都要等他自动刷新浏览器效率非常低, 因此考虑使用 HMR 模式
szhshp
2022/09/21
5150
Webpack 如何配置热更新
是指 Hot Module Replacement,缩写为 HMR。对于你需要更新的模块,进行一个"热"替换,所谓的热替换是指在不需要刷新页面的情况下,对某个改动进行无缝更新。如果你没有配置 HMR,那么你每次改动,都需要刷新页面,才能看到改动之后的结果,对于调试来说,非常麻烦,而且效率不高,最关键的是,你在界面上修改的数据,随着刷新页面会丢失,而如果有类似 Webpack 热更新的机制存在,那么,则是修改了代码,不会导致刷新,而是保留现有的数据状态,只将模块进行更新替换。也就是说,既保留了现有的数据状态,又能看到代码修改后的变化。
发声的沉默者
2021/06/14
1.5K0
Webpack 如何配置热更新
webpack中的HMR(热更新)原理剖析
Hot Module Replacement(以下简称 HMR)是 webpack 发展至今引入的最令人兴奋的特性之一 ,当你对代码进行修改并保存后,webpack 将对代码重新打包,并将新的模块发送到浏览器端,浏览器通过新的模块替换老的模块,这样在不刷新浏览器的前提下就能够对应用进行更新。
winty
2019/12/21
1.5K0
基于qiankun微前端实战 + 部署笔记
因业务需要,以下文字纯个人qiankun实战学习笔记,不谈原理只记操作过程,内容难免有纰漏部分,敬请不吝赐教批评指正。
同学小强
2022/08/24
1.4K0
基于qiankun微前端实战 + 部署笔记
webpack热更新原理(面试大概率会问)
这里说明一下,webpack4和webpack5的配置信息或者显示信息可能有点区别
gogo2027
2022/10/10
1.1K0
Ant Design Landing
最近在做一些SAAS产品,Landing page——落地页对于SAAS类产品的重要性不言而喻。之前有想过用wordpress找一些比较漂亮的模板,但想想觉得这个方案对于初期的产品来说还是有点重了。用Vue的话,找了一圈没有发现合适的模板。React体系内,我发现Ant Design生态里有一款Ant Design Landing 框架,简洁明了,又不失美观,比较符合我的需求。
云原生
2022/03/30
1.9K0
Ant Design Landing
Webpack中的文件监听与热更新
2. 在配置 webpack.config.js 中设置 watch: true;
越陌度阡
2023/01/03
1.5K0
Webpack中的文件监听与热更新
【webpack 进阶】聊聊 webpack 热更新以及原理
模块热替换 (hot module replacement 或 HMR) 是 webpack 提供的最有用的功能之一。它允许在运行时更新所有类型的模块,而无需完全刷新
GopalFeng
2022/08/01
1.1K0
【webpack 进阶】聊聊 webpack 热更新以及原理
[探索]Webpack DevServer和HMR原理
原创不易,未经作者允许禁止转载!! Webpack-Dev-Server 为什么要搭建本地服务器 目前开发的代码,为了运行需要有两个操作 npm run build编译 通过live-server或者直接通过浏览器打开html文件,查看效果 为了完成自动编译,webpack提供了几种可选的方式 Webpack watch mode Webpack-dev-server Webpack-dev-middleware Webpack Watch Mode webpack提供了watch模式 在该模式下,web
前端LeBron
2021/12/08
2.1K0
[探索]Webpack DevServer和HMR原理
create-react-app初探
CRA除了能帮我们构建出一个React的SPA项目(generator),充当脚手架的作用。还能为我们在项目开发,编译时进行构建,充当builder的作用。可以看到生成的项目中的package.json包含很多命令:
IMWeb前端团队
2019/12/04
1.3K0
写给前端新人:从 0到1 搭建一个前端项目,都需要做什么?
本案例使用脚手架 create-react-app 初始化了项目。此脚手架有利有弊吧,项目目录结构简洁,不需要太关心 webpack 令人头疼的配置;弊端在于,脚手架确实有些庞大,构建时间在 4mins 左右。各位看官择优选择吧,也可以完全自己搭建一个项目。
zz_jesse
2021/06/01
5.4K0
搭建React开发环境
1.npx create-react-app my-app 需要node版本>14.x
用户7741497
2022/03/21
3740
相关推荐
Ant Design 按需加载css
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验