1. 現在のNode.js / npmをアンインストール
コントロールパネル →「プログラムのアンインストール」→ Node.js を選択してアンインストール
その後、以下のフォルダが残っていたら手動で削除:
C:\Program Files\nodejs\
C:\Users\<ユーザー名>\AppData\Roaming\npm
C:\Users\<ユーザー名>\AppData\Roaming\npm-cache
C:\Users\<ユーザー名>\AppData\Local\npm-cache
2. 環境変数のクリーンアップ
Path の中から nodejs や npm に関するパスを削除
タスクバーの検索欄に「システム環境変数の編集」と入力し [システム環境変数の編集] を選択します

クリックすると

環境変数をクリックで出てくるウインドウ

pathを選択して編集ボタンを押すたら出てくる画面にnodeやnpmがあれば削除する
下の段の「システム環境変数(S)」もスクロールダウンすると「path」が出てくるので確認する。
3. Node.jsを最新版でインストール(fnm経由)
直接インストールより fnm(Node.jsバージョン管理ツール)がおすすめです。後でバージョン切り替えが楽になります。
fnmをインストール
powershell
# PowerShellで実行
winget install Schniz.fnm

環境変数が変更されたのでPowerShellを再起動する。
fmnのパスを通す
Windowsキー + R を押すと、

「ファイル名を指定して実行」が出るので
sysdm.cpl
を実行する。

これの「環境変数」を押す。
出てきた画面の上部のユーザー環境変数の中の「path」を選択して、編集ボタンを押す。
「新規」ボタンを押して以下を追加する。
C:\Users\<ユーザー名>\AppData\Roaming\fnm
<ユーザー名>この部分は自分のログインしているユーザー名を入れる。
wintaroだったら、
C:\Users\wintaro\AppData\Roaming\fnm
このようになる。
入力したら、OKボタン。
Node.jsの最新LTS版をインストールする
powershell
fnm install –lts
インストールが完了したらPowerShellのプロファイルにfnmの設定を追加する。
powershell
notepad $PROFILE
ファイルが存在しないと言われたら「はい」で新規作成。
開いたファイルに以下を追記して保存。
notepad
fnm env –use-on-cd | Out-String | Invoke-Expression

入力し終わったら保存して、PowerShellを再起動する。
VSCodeのターミナルでnodeが認識されない場合の対処法
VSCodeのターミナルで
notepad $PROFILE
これをした時にエラーが出る場合は、VSCodeのターミナル用のプロファイルを作ります
VSCodeのpowershell
New-Item -Path $PROFILE -ItemType File -Force
この後、
VSCodeのpowershell
notepad $PROFILE
ノートパッドで開いて、先ほどと同じように
notepad
fnm env –use-on-cd | Out-String | Invoke-Expression
これでVSCodeのターミナルでnodeを使えるようになります。
最新版を使うように指定する
powershell
fnm use lts-latest
確認する。
powershell
node -v
次のような画面が出たらOK。
バージョン番号はインストールの時期によって変わります。

デフォルトを指定しておく
新しいPowerShellを開いたときに自動でこのバージョンが使われるようになります。やらないと毎回 fnm use を手動で実行しないといけなくなります。
powershell
fnm default lts-latest
4. Yarnのインストール
powershell
corepack enable
これをした後、
powershell
corepack prepare yarn@stable –activate
これをします。
corepackはnode.js16.10以降に付属しています。
以下のようになります。

確認。
powershell
yarn -v
これでバージョンがでたらOKです。

こんな感じです。