🔰

Laravel Sail✖️ViteでSegmentation faultが発生した時に試してほしい4つのこと

2023/07/26に公開

開発環境

・Laravel10
・Docker
・npm
・Vite

事象

Laravel Sailでnpm run devをしたところ、Segmentation faultが発生してサーバーが起動しなかった。

terminal
$ npm run dev
>dev
>vite
Segmentation fault

nodeとnpmのバージョン

terminal
$ npm -v
9.7.2

$ node -v
20.1.0

試したこと

「Segmentation fault」を解消するために試したことは以下の4つです。

  1. nodeのバージョンを下げる
  2. node_modulesを削除し、再度npm install
  3. PCのソフトウェアアップデートで最新の状態に更新する
  4. npmのキャッシュをきれいにする

1.nodeのバージョンを下げる

「npm run dev Segmentation fault」で調べると、まず出てくるのが「Nodeのバージョンを下げる」でした。

terminal
# n パッケージのインストール
$ npm install -g n

# nodeのバージョン一覧を表示し、バージョンを決定する
$ n ls-remote --all

# 指定したバージョンをインストールする(今回は16.20.1を選択)
$ sudo n 16.20.1

私の場合はこれが原因だったと思います。最新版の20.1.0から18.17.0に下げてもダメで、さらに16.20.1に下げて再度npm run devをやってみるとサーバーが起動しました。

Nodeのバージョンを下げる場合、docker-compose.ymlに以下のように設定することでもできるそうです。

docker-compose.yml
build:
    args:
        WWWGROUP: "${WWWGROUP}"
        NODE_VERSION: "16" # <= nodeのバージョンを指定する

2.node_modulesを削除して、再度npm installする

terminal
$ rm -rf node_modules
$ npm install

1回りセットすることで、解決することもよくありますよね...


3.PCのソフトウェアアップデートで最新の状態に更新する

これでも解決した人がいるみたいです。
私もアップデートしておらず、試してみましたが効果なし。


4.npmのキャッシュをきれいにする

terminal

$ npm cache verify

$ npm cache clean --force

あまり効果はなかったように思えますが、試してみる価値はありそうです...

まとめ

Laravel SailでViteなどを使用したアプリケーションを開発する際に、npm run devを実行すると「Segmentation fault」が発生する場合、以下のことを試してみてほしいと思います。

  1. nodeのバージョンを下げる
  2. node_modulesを削除し、再度npm install
  3. PCのソフトウェアアップデートで最新の状態に更新する
  4. npmのキャッシュをきれいにする

少しでもお役に立てば嬉しいです。

参考記事

https://qiita.com/dtakkiy/items/18847ec32580ac8d210e

https://stackoverflow.com/questions/41813093/npm-causes-segmentation-faults

https://qiita.com/oishii_pg_gohan/items/64ad448699464aab0ae3

Discussion