laravel インストール

D:\git\WkMhMng\Attendance_lnx\Attendance>php artisan ui bootstrap --auth
  Command "ui" is not defined.
composer require laravel/ui --dev
php artisan ui vue --auth
npm install
npm run dev
  :
  <省略>
  :
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ development: `mix`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @ development script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\hnumagaki\AppData\Roaming\npm-cache\_logs\2021-12-12T13_42_30_172Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ dev: `npm run development`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @ dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\hnumagaki\AppData\Roaming\npm-cache\_logs\2021-12-12T13_42_30_206Z-debug.log

WindowsのNode.jsバージョン管理をNodistからfnmに変えてみる

Laravel Error Class “App\libs\XXXXX” not found

現象

Laravel で名前空間の指定が正しくWindowsでは正常に動作し、Linuxで Class Not Found が出て原因不明の現象におちいった

autoload_classmap.php

オートロードするファイルの配列が作られているファイルを一旦調査する。キーがnamespaceで値がパスになっている。

vendor/composer/autoload_classmap.php

配列が存在しないなら以下のコマンドを実行する

% composer dump-autoload

dump-autoload

クラス名の変更や新規追加など、名前空間を新たに作成した時は以下のコマンドを実行し、autoload_classmap.phpを更新する。

% composer dump-autoload

composer.json

オートロードはcomposer.jsonに記述されています

独自にapp\Logic\Sampleなど各機能毎にフォルダ分けしてクラスを分けたい場合、app\tests\TestCase.php追加する場合、 composer.json ファイル内にある classmap の配列の箇所に作成したフォルダのパスを追記し、composer dump-autoloadで取り込む。

    "autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/seeds",
            "database/factories",
            "Logic/Sample",
            "tests/TestCase.php"
        ]
    },

基本クラスのエイリアス

config/app.php に記述されているAliasは、短く記述できるので config/app.php 参照してみる

例:use App;

    'aliases' => [

        'App' => Illuminate\Support\Facades\App::class,
        'Arr' => Illuminate\Support\Arr::class,
        'Artisan' => Illuminate\Support\Facades\Artisan::class,
        'Auth' => Illuminate\Support\Facades\Auth::class,
        'Blade' => Illuminate\Support\Facades\Blade::class,
        'Broadcast' => Illuminate\Support\Facades\Broadcast::class,
        'Bus' => Illuminate\Support\Facades\Bus::class,

composer.json

参考

Laravelで名前空間を指定してオートロードされなかったら見る場所