Laravel mix函数使用问题:部署到托管平台后无法生成资源版本号
问题原因与解决方案
Laravel的mix()方法找不到mix-manifest.json文件时会直接返回原始资源路径,不会拼接版本号参数,你可以按以下步骤逐一排查:
- 确认
mix-manifest.json部署路径正确
执行npm run production打包资源后,生成的mix-manifest.json必须上传到托管平台的站点根目录(即public目录),不能放在项目根目录,也不能漏传。 - 修正自定义public路径配置
如果你的托管平台要求将静态资源放到public_html等非默认public目录,需要在webpack.mix.js中显式指定公共路径,示例配置:
mix.setPublicPath('public_html') .js('resources/js/app.js', 'js') .postCss('resources/css/app.css', 'css', []) .version();
修改后重新执行打包命令,再将新生成的静态资源和mix-manifest.json上传到托管平台对应目录即可。
- 检查文件读取权限
确保托管平台上mix-manifest.json的文件权限设置为644,保证Laravel运行进程有读取该文件的权限,权限不足也会导致版本号无法生成。 - 校验资源路径配置
如果你的托管平台配置了CDN或者自定义静态资源域名,检查.env文件中的ASSET_URL参数是否和实际资源访问路径一致,路径不匹配会导致mix()方法无法定位到manifest文件。
现象参考
- 本地正常运行效果:

- 托管平台异常运行效果:

内容的提问来源于stack exchange,提问作者Fernanda Akhsanuddin
相关产品推荐
相关产品推荐

