2017-09-16 129 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。