🐶

Expoでnode_modulesのエラーが出たので解消しました

2024/11/14に公開

はじめに

Turborepo×Expo×Expressでリポジトリを作成しているときに、Expoでシミュレータ画面がエラーになってしまったので、その対応方法を書きます。

エラー内容

node_modules/expo-router/_ctx.ios.js: node_modules/expo-router/_ctx.ios.js:Invalid call at line 2: process.env.EXPO_ROUTER_APP_ROOT
First argument of `require.context` should be a string denoting the directory to require.

RCTFatal
__28-[RCTCxxBridge handleError:]_block_invoke
_dispatch_call_block_and_release
_dispatch_client_callout
_dispatch_main_queue_drain
_dispatch_main_queue_callback_4CF
__CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
__CFRunLoopRun
CFRunLoopRunSpecific
GSEventRunModal
-[UIApplication _run]
UIApplicationMain
main
start_sim
0x0
0x0

process.env.EXPO_ROUTER_APP_ROOT require.context`の第1引数には、requireするディレクトリを示す文字列を指定します。という内容のエラーだったのですが、EXPO_ROUTER_APP_ROOTの記述がどこにもなかったので、かなり解決に時間がかかってしまいました。

解決方法

Turborepo,Expo,Express内にある全てのnode_modulesとpackage-lock.jsonを削除し、npm installしたら解消しました!
packageの依存関係が上手くいってなかった可能性があります。

まとめ

エラー内容と全然違ったのでかなりの時間を費やしてしまいました。みなさんもエラーが解消しなかったら一度node_modulesとpackage-lock.jsonを削除し、npm installしてみてもいいかもしれません!

Discussion