我想在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