現象
Heroku CLIでheroku run
しようとすると、Error: connect ETIMEDOUT
と出て詰まる。
〔ターミナル〕
$ heroku run hoge
Running hoge (略)
Error: connect ETIMEDOUT <IP Address>:5000
発生条件
- macOS v12 Monterey以上
原因と対処法
-
上記のように、
heroku run:detached
を使うと良いと検索でヒットする。- しかしコンソール出力を受け取れないため、コマンドラインアプリケーションを実行するのに困ってしまう。
-
上記の記事に注目
「heroku run」
の仕組みは,クライアントの5000番ポートでHerokuに接続することにより,クライアント側のコンソールに対してコマンドの入出力を実行可能にするものである。 -
公式にも書いてある
heroku run
コマンドにより、Heroku への接続がポート 5000 で開きます。
- 一方、
Montereyの新機能の一つにAirPlayのレシーバーになれるというものがある。
これが5000番ポートを使ってListenするようになったのだ。
-
つまり、MacOSが5000番ポートを予約しているので
heroku run
とバッティングしてしまうというわけ。 -
AirPlay Receiverを使わない場合、オフにすれば
heroku run
が正しく動作すると思われる。
以上