Laravel環境をインポートしたときに”artisan package:discover handling the post-autoload-dump event returned with error code 1″エラーが出た時に確認したいこと

  • 2018年12月10日
  • 2018年12月10日
  • Laravel

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

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG