我正在尝试使用 Vite 部署一个全新的 Laravel 9 站点。
\n我的站点在本地运行得很好,并且部署是使用默认部署脚本通过 Laravel forge 运行的:
\ncd /home/forge/default\ngit pull origin $FORGE_SITE_BRANCH\n\n$FORGE_COMPOSER install --no-interaction --prefer-dist --optimize-autoloader\n\n( flock -w 10 9 || exit 1\n echo \'Restarting FPM...\'; sudo -S service $FORGE_PHP_FPM reload ) 9>/tmp/fpmlock\n\nif [ -f artisan ]; then\n $FORGE_PHP artisan migrate --force\nfi\nRun Code Online (Sandbox Code Playgroud)\n在将更改从本地服务器推送到远程服务器之前,我运行:
\nnpm run build\nRun Code Online (Sandbox Code Playgroud)\n但是,当该站点部署到 forge 时,我收到以下错误:
\n\n\n(异常(代码:0):在以下位置找不到 Vite 清单:/home/forge/default/public/build/manifest.json 位于 /home/forge/default/vendor/laravel/framework/src/Illuminate/Foundation/Vite。 php:139)
\n
当我 ssh 进入我的服务器时,这是该文件夹的内容/public:
.\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 public/\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 favicon.ico\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.php\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 robots.txt\nRun Code Online (Sandbox Code Playgroud)\n该文件夹不/build应该在生产站点上也可用吗?还是我遗漏了一些东西?请注意,在我的标准生成.gitignore文件中,这些路径被排除:
/public/build\n/public/hot\n/public/storage\nRun Code Online (Sandbox Code Playgroud)\n
oli*_*rbj 10
我最终改变了我的.gitignore. 我删除了以下内容:
/public/build
/public/hot
/public/storage
Run Code Online (Sandbox Code Playgroud)
并添加了以下内容:
!/public/build
/public/hot
/public/storage
Run Code Online (Sandbox Code Playgroud)
这也解决了这个问题。
我通过更新 Laravel Forge 上的部署脚本来修复此问题,以包含npm install和npm run build:
cd /home/forge/default
git pull origin $FORGE_SITE_BRANCH
$FORGE_COMPOSER install --no-interaction --prefer-dist --optimize-autoloader
( flock -w 10 9 || exit 1
echo 'Restarting FPM...'; sudo -S service $FORGE_PHP_FPM reload ) 9>/tmp/fpmlock
if [ -f artisan ]; then
$FORGE_PHP artisan migrate --force
fi
npm install
npm run build
Run Code Online (Sandbox Code Playgroud)
我看了这个类似问题的回复,基本上说:
生产资产构建是一个已知问题,有多种已知解决方案:
- 您在本地构建资产并将其提交到 Git
- 您让部署脚本(和服务器)为您构建资产
- 您在本地构建资产,将它们发布到云,然后告诉部署脚本下载它们
我选择了选项2:)