Laravel 8部署到虚拟主机后提示The Mix manifest does not exist如何解决?
Laravel Jetstream部署后The Mix manifest does not exist报错解决
产生原因
- 站点根目录映射不符合Laravel部署要求:你当前将虚拟主机站点根目录指向了项目根目录
/htdocs,而Laravel默认对外服务根目录为public目录,mix()辅助函数默认会从public目录下查找mix-manifest.json文件,你将该文件放在项目根目录会导致路径匹配失败。 - 资源输出路径配置不匹配:如果本地编译资源时修改过
webpack.mix.js的公共输出路径,但部署后没有同步调整对应配置,也会导致Laravel无法定位到manifest文件。 - 文件权限不足:
mix-manifest.json或其父目录的权限设置错误,导致Laravel服务进程没有读取该文件的权限。
修复方案
方案1:修正站点根目录映射(推荐)
- 进入虚拟主机控制面板,找到站点根目录配置项,将原有根目录路径
/htdocs修改为/htdocs/public,这是Laravel项目的标准部署规则,同时可以避免项目核心配置文件暴露到公网。 - 将你存放在项目根目录的
mix-manifest.json文件移动到public目录下,同时确认对应的js/app.js、css/app.css等静态资源也存放在public目录的对应子目录中。
方案2:虚拟主机不允许修改根目录时的兼容方案
- 在项目根目录
/htdocs下新建.htaccess文件,写入以下重写规则,将所有公网请求转发到public目录处理:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule>
- 也可以通过修改配置自定义mix查找路径:打开
config/app.php,在配置数组中新增'mix_public_path' => base_path(),即可让Laravel从项目根目录查找manifest文件。
方案3:修复文件权限
- 将
public目录权限设置为755,mix-manifest.json文件权限设置为644,确保服务进程有读取权限。
方案4:重新编译资源修正路径
- 本地打开项目根目录的
webpack.mix.js,添加配置mix.setPublicPath('public')指定公共输出目录,重新运行npm run prod编译资源,将新生成的public目录下的所有资源文件和manifest文件上传到服务器对应目录即可。
内容的提问来源于stack exchange,提问作者Pleinair
相关产品推荐
相关产品推荐

