備忘録:
これは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にコミットします。
そして、
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
が入ると思います。
コメント