You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel共享主机静态资源同步:npm run watch修改未生效

我之前在共享主机上部署Laravel项目时也碰到过一模一样的问题,折腾了好一会儿才搞定,给你整理几个最可能的解决方向:

解决Laravel Mix静态资源与共享主机同步问题

1. 先确认Mix的编译路径配置

首先检查你的webpack.mix.js,确保编译产物的输出路径和服务器的实际目录匹配。共享主机常把public_html作为网站根目录,如果你本地Laravel的public目录对应服务器的public_html,就得调整Mix的配置:

// webpack.mix.js
mix.js('resources/js/app.js', 'public_html/js')
   .sass('resources/sass/app.scss', 'public_html/css')
   .setPublicPath('public_html');

编译后先看本地的输出目录(比如public_html/js)里的文件是不是最新的,如果本地没问题,那问题大概率出在上传环节。

2. 别在共享主机上用npm run watch

npm run watch是给本地开发用的,用来实时监听文件变化自动编译,但共享主机基本不支持长时间运行的进程,而且就算能跑,你本地的修改也不会自动同步到服务器。正确的流程应该是:

  • 本地开发时用npm run watch实时编译调试
  • 开发完成后,执行npm run prod(生产环境用这个,会压缩优化资源;测试环境可以用npm run dev)生成最终静态文件
  • 把编译后的js、css文件夹,还有关键的mix-manifest.json文件,完整上传到服务器对应目录

3. 清理缓存是必做步骤

很多时候修改已经同步了,但缓存让你看不到变化:

  • 浏览器端:按Ctrl + Shift + R强制刷新,或者打开开发者工具的Network面板,勾选「Disable cache」再刷新
  • Laravel端:登录服务器执行命令清理框架缓存:
php artisan cache:clear
php artisan config:clear
php artisan view:clear

另外,一定要确保模板里用mix()函数引入资源,它会自动带上哈希值避免缓存:

<script src="{{ mix('/js/app.js') }}"></script>
<link href="{{ mix('/css/app.css') }}" rel="stylesheet">

4. 检查服务器文件权限

上传后的静态文件权限不对,也会导致网站无法读取新资源。一般来说,js、css目录权限设为755,文件权限设为644就行,可以用FTP工具或者服务器的文件管理器调整。

5. 确认文件上传完整

有时候FTP上传会因为网络问题漏掉文件,尤其是mix-manifest.json——这个文件是Laravel用来映射哈希文件名的关键。上传后可以对比本地和服务器上的文件大小,或者直接打开服务器上的mix-manifest.json,看看里面的哈希值是不是和本地编译后的一致。


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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:08:30