React代码更新后浏览器未同步,仍显示已移除的旧输出(含已删除的console.log内容)
这种情况我之前也碰到过,明明代码里已经删掉了旧的console.log,但控制台还固执地输出旧内容,清缓存、无痕模式都不管用,大概率是缓存或者构建同步的问题,给你几个实用的排查方向:
先搞定构建工具的缓存:如果你用的是Create React App,先手动删掉项目根目录的
build文件夹,然后重新运行npm run build;要是用Vite的话,删掉.vite缓存文件夹,再重启开发服务器。很多时候是构建工具保留了旧的编译结果,导致浏览器加载的还是老代码。强制浏览器硬刷新:普通刷新(F5)可能只会读取缓存,试试按住快捷键强制刷新——Windows/Linux按
Ctrl + Shift + R,Mac按Cmd + Shift + R,这会让浏览器完全忽略本地缓存,重新下载所有资源。重启开发服务器:有时候热重载会“罢工”,代码改了但服务器没同步更新。关掉当前的开发服务(比如终止
npm start的进程),重新启动一次,确保服务器加载的是最新的代码文件。验证浏览器加载的代码是否最新:打开浏览器开发者工具的「Sources」面板,找到
Analytics.actions.js文件,直接查看里面的代码内容。如果还能看到已经删掉的console.log(data),那说明构建过程没生成新文件,得检查构建脚本有没有问题,或者有没有其他工具(比如代码压缩插件)在干扰编译。排查后端服务器缓存:如果你的前端是和后端一起部署的,哪怕是本地后端服务器,也可能缓存了静态资源。重启后端服务器,或者检查后端的静态资源缓存配置,确保它不会留存旧的前端文件。
附上你提供的当前代码,确认里面只有console.log('test'),没有旧的输出语句:
import axios from 'axios' // const rootUrl = 'http://localhost:4000'; const rootUrl = ''; export const getAnalytics = () => async(dispatch)=> { try { dispatch({ type: 'GetAnalyticsRequest' }) const {data} = await axios.get(`${rootUrl}/api/v1/analytics/getAll`, { withCredentials: true }) console.log('test'); dispatch({ type: 'GetAnalyticsSuccess', payload: data }) } catch (error) { dispatch({ type: 'GetAnalyticsFailure', payload: error.response.data.message }) } } export const getUrlAnalytics = (hash) => async(dispatch)=> { try { dispatch({ type: 'GetUrlAnalyticsRequest' }) const {data} = await axios.get(`${rootUrl}/api/v1/analytics/url/${hash}`, { withCredentials: true }) dispatch({ type: 'GetUrlAnalyticsSuccess', payload: data }) } catch (error) { dispatch({ type: 'GetUrlAnalyticsFailure', payload: error.response.data.message }) } } export const getClicks = (hash, duration) => async(dispatch)=> { try{ dispatch({ type: 'GetClicksRequest' }) let url = ""; if(duration && hash){ url = `${rootUrl}/api/v1/analytics/clicks?hash=${hash}&duration=${duration}` } if(duration && !hash){ url = `${rootUrl}/api/v1/analytics/clicks?duration=${duration}` } if(!duration && hash){ url = `${rootUrl}/api/v1/analytics/clicks?hash=${hash}` } if(!duration && !hash){ url = `${rootUrl}/api/v1/analytics/clicks` } const {data} = await axios.get(url, { withCredentials: true }) dispatch({ type: 'GetClicksSuccess', payload: data }) } catch(error){ dispatch({ type: 'GetClicksFailure', payload: error.response.data.message }) } }
备注:内容来源于stack exchange,提问作者Harshil Sharma

