2017-09-16 97 views
0

我想在heroku上部署我的項目。我安裝了一切,並嘗試運行數據庫種子命令,這給了我錯誤的Faker工廠不包括在內。檢查我的gitignore文件看到供應商文件夾被忽略。Git推送供應商文件Laravel

推送供應商文件夾是否是一種好的做法?或者我還能怎樣解決這個問題?

+0

推送供應商文件不是一個好主意。在NodeJS項目中,您通常會有一個構建項目並部署它的heroku腳本。 **我對拉拉維爾不是很熟悉,但這可能與你應該做的事情相同。 – Baruch

+0

它是gitignore的一部分,這就是爲什麼它不推動。您不需要推送供應商文件夾。在你回購後,'composer update'會讓你所有的供應商文件回來。 – Michel

+0

我不知道我跑了下面的命令:inline'git add。 ; git commit; git push heroku master; heroku運行作曲家更新 - dev; heroku運行php工匠db:種子',它仍然給我同樣的錯誤。 – zerociudo

回答

2

在Heroku上運行composer install通過heroku run不是一個好主意。 Heroku's filesystem is ephemeral。下次您的dyno重新啓動時,您寫入的任何內容(例如,安裝到vendor/的庫)都將丟失。這happens frequently

正確的解決方案是確保您的composer.jsoncomposer.lock是準確的,最新的並已提交到您的存儲庫。如果你需要Heroku上的faker,它應該是require d,而不是require-dev ed。 Heroku will run composer install automatically as part of the deploy process

除了短暫的文件系統問題,這也意味着vendor/將成爲已編譯的應用程序slug的一部分,確保供應商文件在每個dyno上都可用,如果您超過一個dyno。

0

開放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。