前回、WSLでReact Native + Expo環境を作ろうという記事を書き、その末尾にも書いていたのですが、expo start
したときに起こる謎のネットワーク不具合について調べたこと、わかったことを書いておきます。
ネットワーク不具合
起こる問題
WSLでexpo start
した後、20~30分後くらいにネットワークが繋がらなくなってしまう。
どこのページにアクセスしようとしても以下のようにエラーが表示され、アクセスできません。
ここに表示されているWindowsネットワーク診断ツールを実行してみても、異常がないといわれます。
CONNECTIONをTunnelにした時も、expo start --offline
とオプションをつけた時も、同様の現象が起きます。
一応、Windows自体を再起動すれば、また繋がるようにはなるのですが、短時間の間に都度都度再起動するのはかなり手間ですし、ストレスにもなります。
対応策
この現象について調べていても、なかなか情報が見つけられませんでしたが、GitHubにほぼ同じ現象が報告されていたIssueを見つけました。
expo-cli/issues - Host remains without network after a while
ここで緩和策として、以下の手順を踏めばいいとありました。
I found a palliative solution not to restart the machine:
1 - WIN+R -> services.msc
2 - Find LxssManager
3 - Right-click -> Restart
This should restart the WSL service, normalizing the network.
LxssManager is the service that manages the layer that communicates between Windows and Linux. Restarting it is basically equivalent to restarting Windows regarding everything that happens in WSL.
LxssManagerは、WindowsとLinuxの間で通信するレイヤーを管理するサービスらしく、これを再起動することで、Windowsを再起動したときと同じことがWSL上で起こるそうです。
この手順を踏めば即座にWSLが再起動され、ネットワークが繋がるようになります。
課題
上記の手順でネットワークが復旧する...のですが、そこからまたexpo start
してしばらくすると、またネットワークが繋がらなくなります...。
This is likely an issue with WSL. There is an issue for this at microsoft/WSL#2913.
どうもこの現象はExpo-Cliというより、WSLの問題らしく、Issueが上がっているそうです。
Can confirm that Windows Insider Build 18890 fixes this issue.
Windows 10 Insider Build 18890では、この問題が修正されたとのこと。
調べてみると、このバージョンは2020年前半にリリース予定の大型アップデート「20H1」のプレビュービルドとなるそうです。
もう少しの間我慢になりますが、正式にリリースがくれば解決できそうですね。(Windows Insider Programに参加する度胸はありません...)
Obs: When I run the expo-cli start in CMD and then run on WSL, a network does not fail anymore....
ちなみにこんなことも書いてありましたが、CMDってことはWindows側にExpoを入れるってことなのかな?と思い、あまり入れたくないので試していません。
直接WindowsにExpo(及びNode.js)を入れてもいいという方は、そうされた方がいいのかもしれませんね。