npm run devで「Segmentation fault」が起きたときの対処法

今回はnpm run devのコマンドを叩いたとき、「Segmentation fault」というエラーが起きてしまったとき私はどう対処したのかについてご紹介していこうと思います。

Node.jsのバージョンは20.12.2で、Nuxt.jsのバージョンは3.11.2です。
Dockerを使っていて、node_modulesを名前付きボリュームとしてマウントしている状態でした。



npm run devで「Segmentation fault」が起きたときの対処法

突然、npm run devを叩いたとき、「Segmentation fault」と出てアプリケーションが動かなくなってしまいました。

結論から言うと、node_modulesやpacakge-lock.jsonを作り替えると私の場合はうまくいきました。

しかしDockerを使ってnode_modulesを名前付きボリュームとしてマウントしていたため、node_modulesの削除に手間取りました。
名前付きボリュームとしてマウントしているため、node_modulesを削除しようとすると「rm: cannot remove 'node_modules/’: Device or resource busy」と出てしまいます。
一度マウントを外してからnode_modulesを削除しようとしても、Dockerfileでコンテナ作成時にnode_modulesを作成するようにしているため、コンテナを立ち上げ直すと復活してしまいます。

私の場合どうやったかというと、
docker compose down
をしてから
docker volume rm 〇〇(名前付きボリューム名)
とするとnode_modulesの初期化ができました。

やや備忘録的な形になってしまいましたが、記録として残しておきます。

追記

何もしなくてもnpm run devを叩くと「Segmentation fault」が出たり出なかったりしました。
また、
docker compose down
をしてから
docker volume rm 〇〇(名前付きボリューム名)
しても「Segmentation fault」が出たり出なかったりしました。(=状況は変わりませんでした)

何か分かりましたら追記いたします。
少なくともpackage.jsonは見直したほうがよさそうです。

さらに追記

私は直接package.jsonを手動で更新しようとしてこの「Segmentation fault」が出るようになってしまいましたが、
npm install -g npm-check-updates
でnpm-check-updatesをグローバルインストールしてからコマンドを叩いて自動で更新したら「Segmentation fault」が出る状態になるというのは防げました。

もし私と同じようなことをしようとしているのであれば、npm-check-updatesを使うことをおすすめいたします。

さらにさらに追記

npm-check-updatesを使ってpackage.jsonをアップデートしても「Segmentation fault」が出たり出なかったりしました。
Node.jsのバージョンを落としたところ、「Segmentation fault」が出なくなりました。

終わりに

今回はnpm run devのコマンドを叩いたとき、「Segmentation fault」というエラーが起きてしまったとき私はどう対処したのかについてご紹介いたしました。

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いしております。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。

Youtubeチャンネル開設いたしました。
チャンネル登録者1000人を目指しているので、良いと思った方はチャンネル登録をお願いしたいです。
https://www.youtube.com/channel/UC219XhmSRxmXltTy6COxSMw






Nuxt.js

Posted by ちこ