【React Native】npx expo startしたらReferenceError: ReadableStream is not definedと怒られた話

# 概要
下記を参考にReact Native (Expo)の環境構築をしていた時に
色々怒られまくってやっとこさ環境ができた話です。

https://docs.expo.dev/get-started/set-up-your-environment/

# 経緯

`npx expo start`を実施すると以下エラーが出て怒られた。。。

```
ReferenceError: ReadableStream is not defined
    at Object.<anonymous> (/Users/user/Desktop/sample-app/node_modules/undici/lib/web/fetch/response.js:528:3)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/Users/user/Desktop/sample-app/node_modules/undici/lib/web/fetch/index.js:11:5)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
npm notice 
npm notice New major version of npm available! 7.24.0 -> 11.1.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.1.0
npm notice Run npm install -g npm@11.1.0 to update!
npm notice 
```

ここから対応していくのですが、更にエラーが出まくりました。
そのため、出力エラー順に対応した内容を記載してます。

# エラーその1
下の方に
```
npm notice Run npm install -g npm@11.1.0 to update!
```
と出ている。
どうやらnpmのバージョンが古かったみたい。

そこで`npm install -g npm@11.1.0 `を言われた通りに実施。

# エラーその2
すると今度は、
```
npm ERR! code EBADENGINE
npm ERR! engine Unsupported engine
npm ERR! engine Not compatible with your version of node/npm: npm@11.1.0
npm ERR! notsup Not compatible with your version of node/npm: npm@11.1.0
npm ERR! notsup Required: {"node":"^20.17.0 || >=22.9.0"}
npm ERR! notsup Actual:   {"npm":"7.24.0","node":"v16.10.0"}

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/user/.npm/_logs/2025-02-07T14_58_49_534Z-debug.log
```
と怒られた…
これまた下の方に
```
npm ERR! notsup Required: {"node":"^20.17.0 || >=22.9.0"}
npm ERR! notsup Actual:   {"npm":"7.24.0","node":"v16.10.0"}
```
とあり、現在のNode.jsnバージョンは`"node":"v16.10.0"`であるのに対し、
求められているのは`{"node":"^20.17.0 || >=22.9.0"}`とのこと。
そこで、Node.jsごとアップデートすることにした。

下記コマンドをターミナルで実施して、
Node.jsのバージョンアップデートを実施。
```
brew update
brew upgrade nodebrew
nodebrew install-binary v20.17.0
nodebrew use v20.17.0
```

↑を実施後はバージョン確認。
```
node -v
> v20.17.0

npm --version
> 10.8.2
```
バージョンが上がっているので、
`npx expo start`を再び実施。

※以下参考とさせていただきました🙇‍♂️

https://qiita.com/Hide-Zaemon/items/cbb4497237843a729994

# エラーその3
また怒られました…
今度は
```
Error: The required package `expo-asset` cannot be found
    at getAssetPlugins (/Users/user/Desktop/sample-app/node_modules/@expo/metro-config/src/ExpoMetroConfig.ts:65:11)
    at getDefaultConfig (/Users/user/Desktop/sample-app/node_modules/@expo/metro-config/src/ExpoMetroConfig.ts:373:21)
    at loadMetroConfigAsync (/Users/user/Desktop/sample-app/node_modules/@expo/cli/src/start/server/metro/instantiateMetro.ts:96:43)
    at instantiateMetroAsync (/Users/user/Desktop/sample-app/node_modules/@expo/cli/src/start/server/metro/instantiateMetro.ts:195:53)
    at MetroBundlerDevServer.startImplementationAsync (/Users/user/Desktop/sample-app/node_modules/@expo/cli/src/start/server/metro/MetroBundlerDevServer.ts:940:69)
    at MetroBundlerDevServer.startAsync (/Users/user/Desktop/sample-app/node_modules/@expo/cli/src/start/server/BundlerDevServer.ts:160:18)
    at DevServerManager.startAsync (/Users/user/Desktop/sample-app/node_modules/@expo/cli/src/start/server/DevServerManager.ts:184:7)
```
と出た…
どうやら、
`expo-asset`なるものが見つからないようだ。

以下によると`npx expo instal`でモジュールをインストールできるとのこと。

https://docs.expo.dev/bare/installing-expo-modules/#using-expo-sdk-packages

そこで
```
npx expo install expo-asset
```
を実施し、`expo-asset`のインストールに成功。

# やっと解決
再び`npx expo start`を実施。
３度目？の正直で無事動作しました！