localhostにlistenしようとして使っていないアドレスで失敗するのはVagrantが/etc/hostsを書き換えるのが原因?
問題
Macでlocalhostを対象に待受を行うプログラム(例: webpack-dev-server)を動かすと
Error: listen EADDRNOTAVAIL: address not available 192.168.33.13:8080
のようなエラーが起きてlisten出来ないことがあります.
192.168.33.13
なんてIPアドレスの範囲すら外れているので完全に謎です.
同僚2人がMac使いでこの現象に悩まされていたので調査してみました.
直接的な原因
/etc/hosts
にlocalhostの紐づけが書き加えられているのが直接的な原因です.
削除で解決します.
根本の原因
謎です.
なんで/etc/hosts
が書き換わっているんだ?
今回はコメントとしてVagrantと書かれていたのでVagrantが書き込みの犯人のようですが, 最近Vagrantを使ったこともアップデートをしたことも無いらしいので何故書き換わったのかは謎です. なので何故書き加えられたのかは完全に謎なのですよね. 最近DockerをアップデートしたらしいですがVagrantとは関係ない… 何故Vagrantが勝手にlocalhostを書き換えて元に戻しもしなかったのかは謎でしかありません. ググってみたところ転送機能は確かにあるらしいですが, 使ってもいないはずなのに書き換わっていたのが本当に謎です.