Kilimanjaro Warehouse

WEBとかゲーム開発のことについて書きます。

Laravel: 'cross-env' is not recognized as an internal or external command ... の解消法

LaravelのHomesteadでアセットをコンパイルしたい際、

npm run dev

コマンドを叩きます。
ところが、環境によっては
以下のエラーが出てコンパイルがうまくいかないことがあります。

'cross-env' is not recognized as an internal or external command, operable program or batch file.

このエラーは、cross-envをプロジェクトにではなく、
グローバルでインストールすることで解決するようです。

解決策1: cross-envをグローバルでインストールする

以下のコマンドで、プロジェクトのnode_modulesを削除して、
グローバルでcross-envをインストールします。

rm -r node_modules/
npm install --global cross-env

その後、package.jsonをエディタで開き、"cross-env": "^5.0.1",の記述を削除します。
(^5.0.1の部分は環境によって異なります)
そして、以下のコマンドで依存パッケージを再インストールします。

npm install --no-bin-links

以上の手順を行うことで、

npm run dev

を叩いてコンパイルを行うことができます

解決策2: Laravelのバージョンを上げる

このエラーはWindows10でLaravel5.4を使用している際に起きるようです。
単純にLaravelのバージョンを上げることで解決するという報告もあるようでした。


from:
node.js - Laravel 5.4 ‘cross-env’ Is Not Recognized as an Internal or External Command - Stack Overflow