我想在heroku上部署我的項目。我安裝了一切,並嘗試運行數據庫種子命令,這給了我錯誤的Faker工廠不包括在內。檢查我的gitignore文件看到供應商文件夾被忽略。Git推送供應商文件Laravel
推送供應商文件夾是否是一種好的做法?或者我還能怎樣解決這個問題?
我想在heroku上部署我的項目。我安裝了一切,並嘗試運行數據庫種子命令,這給了我錯誤的Faker工廠不包括在內。檢查我的gitignore文件看到供應商文件夾被忽略。Git推送供應商文件Laravel
推送供應商文件夾是否是一種好的做法?或者我還能怎樣解決這個問題?
在Heroku上運行composer install
通過heroku run
不是一個好主意。 Heroku's filesystem is ephemeral。下次您的dyno重新啓動時,您寫入的任何內容(例如,安裝到vendor/
的庫)都將丟失。這happens frequently。
正確的解決方案是確保您的composer.json
和composer.lock
是準確的,最新的並已提交到您的存儲庫。如果你需要Heroku上的faker,它應該是require
d,而不是require-dev
ed。 Heroku will run composer install
automatically as part of the deploy process。
除了短暫的文件系統問題,這也意味着vendor/
將成爲已編譯的應用程序slug的一部分,確保供應商文件在每個dyno上都可用,如果您超過一個dyno。
開放Heroku的命令行
做heroku run composer install
然後heroku run php artisan migrate
設置表
然後heroku run php artisan db:seed
種子分貝
,如果你得到任何數據庫錯誤或遷移時,嘗試做php artisan migrate:reset
then php artisan migrate
另外,請檢查您的composer.json文件,並確保您的"fzaninotto/faker"
在require
之下。如果你只有它require-dev
那麼當您部署在生產,除非你使用的開發標誌heroku run composer install --dev
參考Deployment on Laravel Forge throwing faker not found Exception
而且也回答你的問題不是被裝下,它通常更好地忽略供應商的文件夾並使用作曲家安裝依賴關係,因此gitignore。
推送供應商文件不是一個好主意。在NodeJS項目中,您通常會有一個構建項目並部署它的heroku腳本。 **我對拉拉維爾不是很熟悉,但這可能與你應該做的事情相同。 – Baruch
它是gitignore的一部分,這就是爲什麼它不推動。您不需要推送供應商文件夾。在你回購後,'composer update'會讓你所有的供應商文件回來。 – Michel
我不知道我跑了下面的命令:inline'git add。 ; git commit; git push heroku master; heroku運行作曲家更新 - dev; heroku運行php工匠db:種子',它仍然給我同樣的錯誤。 – zerociudo