In DatabaseServiceProvider.php line 78:Class ‘Faker\Factory’ not foundがheroku上で出た場合の解決方法

アフィリエイト広告を利用しています

heroku

備忘録:

これはherokuでlaravelをインストールしてSeending時にダミーデーターをデータベースにいれようたしたときに起こったエラーです。

原因はダミーデーターを作るライブラリ “fzaninotto/faker”がないことです。

インストールするにはlaravelのトップにあるcomposer.jsonのrequireに”fzaninotto/faker”: “^1.9″を追記してください。

"require": {
"php": "^7.1.3",
"fideloper/proxy": "^4.0",
"laravel/framework": "5.8.*",
"laravel/tinker": "^1.0",
"fzaninotto/faker": "^1.9"
},
"require-dev": {
"beyondcode/laravel-dump-server": "^1.0",
"filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^3.0",
"phpunit/phpunit": "^7.5"
}

ローカルにていちおう

$  composer install

します。

herokuにcomposer.jsonとcomposer.lockをコミットします。

そしてコマンドにて

$  heroku run composer install
$  heroku run composer update

をしてあげるとライブラリが入るのでこれで解決!

補足・解説:composer.jsonとは何なの?人向け


まずherokuのlaravelの最上位のフォルダapp/venderの中に、fzaninotto/fakerが入っているか見ましょう。
入ってなかったら上の通りの手順を行いましょう。

venderはlaravelを動かすのに必要なライブラリを格納しているフォルダです。

laravelのvenderの中にどの依存するライブラリが入るかは、
app/composer.jsonのrequireとrequire-devの{}内に書いてあるかどうかで決まります。
(composer.lockがない場合、composer.lockはcomposer updateで更新できます。)

require内に書かれているパッケージ名は本番環境と開発環境に使うライブラリ、
require-devにかかれているパッケージは開発環境にて使うライブラリになります。

本番環境と開発環境は.envにて切り替えています。

heroku上のcomposer.jsonには

$ heroku run cat composer.json
"require": {
"php": "^7.1.3",
"fideloper/proxy": "^4.0",
"laravel/framework": "5.8.*",
"laravel/tinker": "^1.0"
},
"require-dev": {
"beyondcode/laravel-dump-server": "^1.0",
"filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^3.0",
"phpunit/phpunit": "^7.5"
}

とrequire-devには”fzaninotto/faker”: “^1.4”,が書いていて、
requireには書いていなかった場合、
ローカル上の「”fzaninotto/faker”: “^1.4″」がrequireに書かれたcomposer.jsonとcomposer.lockをherokuにコミットします。

composer.lockとは

composer.json を元にインストールされたパッケージなどが具体的に記述されています。このファイルを利用すれば、同じ環境を作れます。composer.json だけでは、インストールされるパッケージの条件が変わることがあります。

そして、
herokuは
$ heroku run コマンド
でコマンドを実行できます。

コミットしたら
https://github.com/akaunting/akaunting/issues/644#issuecomment-573389900
に書いてあるように

$ heroku run Clear cache
$ heroku run composer install
$ heroku run composer update


とやってあげると、composerがcomposer.jsonにかかれている依存関係を読み込み、
venderに
fzaninotto/faker
が入ると思います。

元講師&現役エンジニアがおすすめプログラミングスクールを詳細解説!

正直プログラミングは独学でもなんとか習得できますが、スクールに通ったほうが断然習得が早く、実務的なスキルが身につきます。

独学で疲弊している方やプログラミングで手に職をつけたい方はスクールを検討してみませんか?

プログラミングスクールの講師を経験した現役エンジニアが他のサイトにはない視点でプログラミングスクールの詳細やおすすめのスクールを徹底解説!

herokularavel
xingxingをフォローする
tech x note |

コメント