You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

React应用Git Pull后Web服务器未更新问题求助

解决React应用部署后Nginx不更新内容的问题

我之前也碰到过一模一样的问题!折腾了好一会儿才搞定,给你列几个最可能的排查方向和解决办法:

1. 先搞定浏览器缓存这个最常见的坑

很多时候不是服务器没更新,是浏览器死死抱着旧缓存不肯放:

  • 强制刷新页面:按Ctrl + Shift + R(Windows/Linux)或Cmd + Shift + R(Mac),直接跳过本地缓存加载最新内容。
  • 更稳妥的测试方式:打开浏览器开发者工具(F12),切换到Network选项卡,勾选「Disable cache」,再刷新页面看效果。

2. 检查Nginx的静态资源缓存配置

如果浏览器缓存清理后还是没变化,大概率是Nginx端给静态资源加了强缓存。去你的站点配置文件(一般在/etc/nginx/sites-available/目录下)看看有没有类似这样的配置:

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    expires 1y;
    add_header Cache-Control "public, immutable";
}

这种配置会让浏览器把静态资源缓存一年,哪怕服务器更新了也不会主动请求新文件。解决办法:

  • 先临时注释掉这些缓存配置,然后重启Nginx:sudo systemctl restart nginx
  • 长期方案:放心用Create React App默认的哈希文件名机制(build后的文件会带一串唯一哈希,比如main.abc123.js),更新后文件名自动变化,Nginx和浏览器就会加载新文件,不用再纠结缓存问题。

3. 确认React项目的build目录真的更新了

别笑,我真的犯过这个错——git pull后忘记重新build,或者build的路径不对:

  • 进入你的React项目根目录,重新执行打包命令:npm run build(用yarn的话就是yarn build
  • 检查Nginx配置里的root字段是不是指向了正确的build目录,比如:
server {
    root /var/www/your-react-app/build; # 这里必须是打包后的build文件夹路径
    index index.html;
    # ...其他配置
}

如果root路径写错了,哪怕你build了一百次,Nginx还是在加载旧目录的内容。

4. 确保Nginx真的重启成功了

有时候sudo service nginx restart可能没生效,试试更可靠的命令:

  • 重启Nginx:sudo systemctl restart nginx
  • 重启后检查状态:sudo systemctl status nginx,确保输出里显示「active (running)」,没有报错。

5. 清理Nginx自身的缓存(如果开启了)

如果你的Nginx配置了proxy_cache这类服务器端缓存,需要手动清理缓存目录:

sudo rm -rf /var/cache/nginx/*
sudo systemctl restart nginx

6. 检查文件权限

git pull后新生成的文件可能权限不对,导致Nginx无法读取:

  • 给项目目录设置正确的用户组权限:sudo chown -R www-data:www-data /var/www/your-react-app
  • 确保build目录下的文件是可读的:sudo chmod -R 755 /var/www/your-react-app/build

按这个顺序排查,基本能解决90%的问题。我当时就是因为Nginx配了强缓存,加上自己没强制刷新浏览器,折腾了半天😂

内容的提问来源于stack exchange,提问作者meerkat

火山引擎 最新活动