我想在heroku上部署我的项目。我安装了所有内容,并尝试运行数据库种子命令,这给了我Faker工厂不包含的错误。检查了我的gitignore文件,发现该供应商文件夹被忽略了。
推送供应商文件夹是一种好习惯吗?或者我怎么能解决这个问题?
答案 0 :(得分:2)
通过composer install
在Heroku上运行heroku run
并不是一个好主意。 Heroku's filesystem is ephemeral。你写的任何东西(例如,安装到vendor/
的库)都会在你的dyno重新启动时丢失。这happens frequently。
正确的解决方案是确保您的composer.json
和composer.lock
准确,最新并提交到您的存储库。如果你需要Heroku上的faker,它应该是require
d,而不是require-dev
。 Heroku will run composer install
automatically as part of the deploy process
除了短暂的文件系统问题之外,这也意味着vendor/
将成为已编译的应用程序slug的一部分,确保供应商文件在每个dyno上都可用,如果您扩展到一个dyno。
答案 1 :(得分:0)
打开heroku命令行
做heroku run composer install
然后heroku run php artisan migrate
设置表格
然后heroku run php artisan db:seed
播种数据库
如果您遇到任何数据库错误或迁移,请尝试执行php artisan migrate:reset
,然后php artisan migrate
另外,请检查您的composer.json文件,并确保"fzaninotto/faker"
下有require
。如果您只在require-dev
下使用它,则在生产部署时不会安装它,除非您使用了开发标记heroku run composer install --dev
请参阅Deployment on Laravel Forge throwing faker not found Exception
为了回答你的问题,通常最好忽略供应商文件夹并使用composer来安装依赖项,因此gitignore。