当我将 Laravel 9 项目部署到生产环境时,Laravel 回复:
Spatie\LaravelIgnition\Exceptions\ViewException:在文件 /var/www/.../vendor/laravel/framework/src/ 中的 /var/www/.../public/build/manifest.json 处找不到 Vite 清单Illuminate/Foundation/Vite.php 第 139 行
事实证明 /public/build 文件夹中的文件没有提交到 git 存储库中,因此在生产服务器上丢失了。
我应该吗?
在生产服务器上安装
npm
并运行 npm run build
生成清单文件,或者
将
/public/build
文件夹的清单文件(例如manifest.json)包含到我的存储库中并将它们拉入生产服务器...
您可以在 Heroku 上添加构建包(部署应用程序时运行的脚本。它们用于安装应用程序的依赖项并配置您的环境),这将允许您运行 npm。嗯,在 Heroku 上很容易做到。
但是如果您碰巧使用 Fortrabbit,则无法在 ssh 中运行
npm
或 vite
。最简单的方法是在本地构建资产(npm run build
或 vite build
)并将其推送到生产环境。
确保在将 .gitignore 中的
public/build
文件夹推送到生产环境之前对其进行注释。这可能适用于很多(几乎)服务器,包括 Heroku,而无需添加构建包。
如果失败,请确保您的 APP_ENV 设置为生产
APP_ENV=production
或除本地之外的任何其他设置,如 vite 文档所述。
我今天在尝试将我的网站(Laravel 11)部署到生产服务器时遇到了这个问题。我发现
public\build
文件夹不在生产服务器上,即使我从 Github 存储库中提取了所有最近的更改。事实证明,public\build
文件夹实际上包含在我本地开发环境中的.gitignore
文件中。因此,当我运行 git push
时,该文件夹不会推送到 Github 存储库。
解决方案非常简单,只需从本地环境中的
public\build
文件中删除包含文件夹 .gitignore
的行,然后将更改提交到 Github 存储库并将更改拉取到远程服务器即可。
如果您要从 Github 存储库中提取更改,则不建议在生产服务器上运行
npm run build
,因为这可能会无意中破坏您的 Git 存储库。始终从本地环境运行 npm run build
,然后将任何更改推送到 Github,随后推送到您的服务器。