いろいろあって、開発中のLaravel環境をgit経由で再インポートしたのですが、再度npm installしてからcomposer installしたところ、こんなエラーが発生しました。
Script @php artisan package:discover handling the post-autoload-dump event returned with error code 1
エラーで調べるとこんな記事が。
[Laravel] プロダクション環境にはLaravel Duskをインストールしない – 端くれプログラマの備忘録
Laravel Duskはブラウザでの自動テストAPIを提供するプラグインで、製品版(production)モードではセキュリティ上の理由で無効化しなければいけないため、productionモードで有効化されているとエラーになります。
記事の通りにcomposer.jsonを確認すると
...
"require": {
"php": "^7.1.3",
"ext-json": "*",
"fideloper/proxy": "^4.0",
"intervention/image": "^2.4",
"lampager/lampager-laravel": "^0.3.0",
"laravel/framework": "5.6.*",
"laravel/tinker": "^1.0",
"league/flysystem-aws-s3-v3": "^1.0",
"maatwebsite/excel": "^3.1",
"simplesoftwareio/simple-qrcode": "^2.0"
},
"require-dev": {
"beyondcode/laravel-dump-server": "^1.0",
"filp/whoops": "^2.0",
"friendsofphp/php-cs-fixer": "^2.13",
"fzaninotto/faker": "^1.4",
"laravel/dusk": "^4.0",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^2.0",
"phpunit/phpunit": "^7.0",
"squizlabs/php_codesniffer": "^3.3"
},
...
あれ、含まれてない(汗
ちゃんとrequire-devにしか”laravel/dusk”の項目は入っていません。
もしやと思ってcomposer.lockの方を確認すると…
...
"name": "laravel/dusk",
"version": "v4.0.2",
"source": {
"type": "git",
"url": "https://github.com/laravel/dusk.git",
"reference": "9810f8609c8b53d9a3bac7d38c56530e0d77a6bb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/dusk/zipball/9810f8609c8b53d9a3bac7d38c56530e0d77a6bb",
"reference": "9810f8609c8b53d9a3bac7d38c56530e0d77a6bb",
"shasum": ""
},
...
含まれていました。
composer installすると
composer.lock
の記述が優先されます。
今回の原因は、composer.lockにその記述が入っていることが原因か…
と思いましたが、ここでふと気づきます。
(まてよ、そもそも開発を始めるときにdevelopモードにしていたはずじゃなかったっけ…)
そもそも今回のエラーはproductionモードにしていなければ出ないはずのエラーなのですが、それにもかかわらず出てしまっているので、よく考えたらおかしな状況です。
そこで調べたところ、.envファイルが入っていないことに気づきました。
前に使っていたLaravelのプロジェクトから.envファイルを書き戻してみると、
composer install Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Nothing to install or update Generating optimized autoload files > Illuminate\Foundation\ComposerScripts::postAutoloadDump > @php artisan package:discover Discovered Package: beyondcode/laravel-dump-server Discovered Package: fideloper/proxy Discovered Package: intervention/image Discovered Package: lampager/lampager-laravel Discovered Package: laravel/dusk Discovered Package: laravel/tinker Discovered Package: maatwebsite/excel Discovered Package: nunomaduro/collision Discovered Package: simplesoftwareio/simple-qrcode Package manifest generated successfully.
となり、先ほどのDuskのエラーは出なくなりました。
.envファイル内の
APP_ENV
の設定が
APP_ENV=local
または
APP_ENV=development
になっていないと、自動でproductionモードとして動作してしまい、Duskの部分でエラーになるようです。
つまり開発の際は.envファイルに
APP_ENV=local
または
APP_ENV=development
を記述するのが必須になってきますので、最初にLaravel環境を展開したときは要注意です。