いろいろあって、開発中の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環境を展開したときは要注意です。