• 作成:

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を書き換えて元に戻しもしなかったのかは謎でしかありません. ググってみたところ転送機能は確かにあるらしいですが, 使ってもいないはずなのに書き換わっていたのが本当に謎です.