Mervelickintopgun
@Mervelickintopgun

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

WSL2でFast Refreshを使いたい

解決したいこと

現在WSL2でNodemonやFast Refreshのリアルタイムアップデートの機能を利用したいと思っているのですが、実装中にエラーが発生してしまいました。解決方法を教えていただけると幸いです。

発生している問題・エラー

Next.jsアプリケーションでJSファイルを更新しましたが、特に反応がないようです。もう一度npm run devをすると反映されますが、これだと開発を進めるのにかなり時間を要する気がしています。

LinuxとWindowsのInotify機能が連携していないのが原因らしいのですが、ウェブ上に記載の解決方法がワークしていない状況です。

自分で試したこと

1.Next.js + nodemon
package.jsonファイル上で以下のように記載してみましたが、localhostに表示されないので表示はみられず。nodemonがすべてのinde.jsファイルをウォッチしているようです。

{
"scripts": "nodemon -L index.js"
}

image.png

  1. WSL2上でアプリフォルダ上でcode .を入力し、Remote-WSLを起動してみる
    特に何ら変わりが無いようでした。

PS:
かれこれこのエラーに1か月くらいかかりっきりで悲しくなってきました。。。

0

4Answer

以下によれば,WSL2におけるinotifyはext4ファイルシステムでしか機能しないとあります./mnt/c下やそれらへのシンボリックリンクでは正しく動作しないようです.

構成のより詳細な情報をお願いします.

1Like

Comments

  1. 早速お返事ありがとうございます!
    システム構成は以下の通りです。

    Windows ホストOS:
    エディション Windows 11 Home
    バージョン 21H2
    OS ビルド 22000.795
    エクスペリエンス Windows 機能エクスペリエンス パック 1000.22000.795.0

    WSL OS:
    NAME STATE VERSION
    * Ubuntu-20.04 Running 2
  2. OSの情報は勿論なのですが
    具体的にどこに開発環境をどのように整備して
    どうやって実行しようとしているのか情報がないとまともに回答しようがないです.
    こういうのは手順を1つでも間違えると上手く動かないので猶更です.

    1か月悩んでいることが1つの手順で解決するなんてザラですが,
    それを明らかにするにはとにかく詳細な情報が必要です.
  3. エラー事象の画像を以下のようにコメントさせていただきました。

具体的にどこに開発環境をどのように整備して
どうやって実行しようとしているのか

というのは

  1. WSL2上にUbuntu22.04LTSをインストール
  2. Ubuntu上にNode.js 16 LTSをインストール
  3. Windows上のVSCodeにRemote-WSLをインストール
  4. Ubuntuで~(/home/user)$ npx create-next-app next-testを実行し,/home/user/next-test$ code .を実行する
  5. 起動したVSCode上でターミナルから$ npm run devを実行

ぐらいは書くものです.
少なくともこちらの環境ではこれでFast Refreshの動作を確認できました.

頂いた情報に沿って、WSLのhomeディレクトリ下にsudoコマンド(権限の問題)で、

よほどのことがない限りnpmをsudoで動かしてはいけません.(npmでsudoしないといけない状況というのはほとんどありませんし,それが必要な場合は恐らくnodeごと壊れています)
パッケージがぐちゃぐちゃになりますし,特権ユーザーでのサーバー起動は脆弱性になり得ます.

1Like

Comments

  1. 質問の仕方について分かっておらず、失礼しました。
    また本件、教えていただいた手順1~5で解決できました!めちゃくちゃ感謝です!
    おそらくUbuntu、Node.jsのバージョンが原因のようでした。

    Ubuntu-20.04 -> Ubuntu22.04LTS
    Node.js 18x -> Node.js 16 LTS

    また今後npmはsudoで動かなさいようにします!

まずやろうとしているのは、Windows WSL2(Ubuntu2.0)環境にNext.jsアプリケーションを構築して開発を進めようと思っていました。

頂いた情報に沿って、WSLのhomeディレクトリ下にsudoコマンド(権限の問題)で、

mkdir -> node.jsをインストール -> npm create-next-app@latest -> npm run devを実施すると以下のようなエラーとなります。

スクリーンショット 2022-07-18 152528.png

0Like

Your answer might help someone💌