RORK LABEN
TOOLING — Rorkの開発者向けリポジトリが動き続けています。rork-xcodeが7月16日、rork-deviceが7月15日、rork-plistが7月13日に更新されましたOPUS46 — RorkでClaude Opus 4.6が稼働しています。Rork MaxはClaude Codeを土台にアプリを組み立てる設計ですSIM — ブラウザ上で動くクラウドのiOSシミュレータを備え、実機へのインストールは1クリック、App Storeへの提出は2クリックと案内されていますMAX — Rork MaxはReact Nativeではなく純粋なSwiftを出力します。iPhone・iPad・Apple Watch・Apple TV・Vision Pro、そしてiMessageまでが射程ですNATIVE — HealthKit、ARKitとLiDAR、NFC、Dynamic Island、Live Activities、Metalによる3D、Core MLのオンデバイス推論まで扱えますSEED — RorkはLeft Lane Capitalが主導する1,500万ドルのシードラウンドを実施し、Peak XVとa16z Speedrunが参加しましたTOOLING — Rorkの開発者向けリポジトリが動き続けています。rork-xcodeが7月16日、rork-deviceが7月15日、rork-plistが7月13日に更新されましたOPUS46 — RorkでClaude Opus 4.6が稼働しています。Rork MaxはClaude Codeを土台にアプリを組み立てる設計ですSIM — ブラウザ上で動くクラウドのiOSシミュレータを備え、実機へのインストールは1クリック、App Storeへの提出は2クリックと案内されていますMAX — Rork MaxはReact Nativeではなく純粋なSwiftを出力します。iPhone・iPad・Apple Watch・Apple TV・Vision Pro、そしてiMessageまでが射程ですNATIVE — HealthKit、ARKitとLiDAR、NFC、Dynamic Island、Live Activities、Metalによる3D、Core MLのオンデバイス推論まで扱えますSEED — RorkはLeft Lane Capitalが主導する1,500万ドルのシードラウンドを実施し、Peak XVとa16z Speedrunが参加しました
記事一覧/開発ツール
開発ツール/2026-05-03初級

Rork で「Unable to resolve module」が出たときに最初に確認する5つのこと

Rork や React Native / Expo 開発でよく出る「Unable to resolve module」エラーの原因を5パターンに整理し、確認順序とコマンドつきで素早く解決する手順を紹介します。

トラブルシューティング77Metro4React Native209Expo149初心者21

Rork で AI に新しい画面を作ってもらって npx expo start を叩いた瞬間、赤い画面でこう出ることがあります。

Unable to resolve module xxx from /path/to/file.tsx

最初に見るとどこから手を付けていいか分かりづらいエラーですが、原因のパターンはほぼ決まっています。私自身、Rork で生成したコードを動かしていてこのエラーに何度もぶつかりましたが、確認する順番さえ覚えてしまえば数分で解決できるようになります。今日はその確認順序を整理して共有します。

このエラーが出る仕組み

React Native の開発サーバー(Metro バンドラー)は、import 文を1つずつたどってアプリの依存ツリーを組み立てます。その途中でファイルやパッケージが見つからないと、Metro はそこで処理を止めて「Unable to resolve module」を返します。

ここで重要なのは、Metro は npm パッケージとローカルファイルの両方をこのエラーで報告するという点です。たとえば import { Camera } from "expo-camera" でも import { Header } from "../components/Header" でも、解決できなければ同じメッセージが出ます。原因の切り分けはエラーメッセージの後半部分に書かれた「from」のあとのファイルパスを見て判断します。

1. パッケージがインストールされていない

頻度として最も多いのがこれです。Rork の AI が生成したコードに、まだ手元の package.json に入っていないパッケージが含まれているケースです。

# エラー例
Unable to resolve module react-native-reanimated from src/screens/Home.tsx
# 解決
npx expo install react-native-reanimated

ポイントは、純粋な npm install ではなく npx expo install を使うことです。Expo SDK のバージョンに合った互換性のある版を自動で選んでくれるため、後段のビルドエラーを未然に防げます。Rork の生成コードで使われがちな expo-imageexpo-blurreact-native-svg などは、これで一発です。

2. Metro のキャッシュが壊れている

package.json には載っていてインストール済みなのにエラーが消えない場合、Metro のキャッシュが古いままという可能性が高いです。新しいパッケージを追加した直後や、ブランチを切り替えた直後によく発生します。

# キャッシュをクリアして起動
npx expo start -c
 
# それでも直らないとき(深いキャッシュも消す)
rm -rf node_modules/.cache
watchman watch-del-all
npx expo start -c

-c フラグは Metro の trans former / haste map キャッシュをまとめてリセットします。Rork で AI が生成したコードを大きく書き換えたあとは、習慣的にこれを使うとトラブルが減ります。

3. import パスのタイポ・大文字小文字の食い違い

開発機(macOS のデフォルトファイルシステム)は大文字小文字を区別しないことが多いのですが、ビルド環境(Linux ベースのクラウドビルド・iOS シミュレータの一部キャッシュ)では区別されます。手元では動いて EAS Build や本番アプリで失敗するケースは、ほぼこれです。

// ❌ ファイル名は Header.tsx なのに小文字でインポート
import { Header } from "./components/header";
 
// ✅ ファイル名と完全一致
import { Header } from "./components/Header";

拡張子のうっかりミスもあります。./utils/format でディレクトリの index.ts を読んでいるつもりが、実は format.ts というファイルだった、というパターンです。エラーメッセージの「from」のあとのパスを起点に、エディタの補完で開き直すと一瞬で気づけます。

4. パスエイリアスを babel.config.jsmetro.config.js に書き忘れている

tsconfig.json"paths" を設定して @/components/Button のような書き方を使うと、TypeScript のエラーは消えても Metro が解決できないことがあります。これは TypeScript と Metro が別の仕組みでパスを解決しているためで、両方に設定する必要があります。

// babel.config.js
module.exports = function (api) {
  api.cache(true);
  return {
    presets: ["babel-preset-expo"],
    plugins: [
      [
        "module-resolver",
        {
          root: ["./"],
          alias: {
            "@": "./src",
          },
        },
      ],
    ],
  };
};

babel-plugin-module-resolver を入れたあとは Metro キャッシュのクリア(前述の -c フラグ)も忘れずに行ってください。プラグインを足しただけではキャッシュが古いまま参照されてエラーが消えないことが多いです。

5. 開発ビルドが必要なネイティブモジュールを Expo Go で動かしている

react-native-vision-camerareact-native-mmkv のような、ネイティブモジュールを必要とするライブラリは Expo Go では動きません。Expo Go は Expo SDK が用意している標準モジュールしかバンドルしていないため、Metro が解決しようとして失敗します。

この場合は Development Build に切り替える必要があります。

# 開発ビルドを作成
npx expo prebuild --clean
npx expo run:ios   # または run:android

Rork の AI に「ネイティブモジュールを使わない方針で」と伝えてコードを再生成し直すという選択肢もあります。プロトタイプ段階では Expo Go のままで進めて、機能要件が固まったタイミングで Development Build に切り替えるのが、私としては実用的だと思っています。

確認順序のまとめ

エラーが出たら、上から順にチェックすると最短で原因にたどり着けます。

  1. パッケージは package.json に入っているか → なければ npx expo install
  2. Metro キャッシュは新鮮か → npx expo start -c
  3. import パスは正しいか(大文字小文字・拡張子・存在)
  4. パスエイリアス(@/)を使っているなら Babel 側にも設定があるか
  5. ネイティブモジュールなら Development Build に切り替えているか

このフローを身につけておくと、Rork の生成コードに依存パッケージが追加されても落ち着いて対処できるようになります。Metro 周りのエラーをもっと体系的に押さえたい方は、Rork で Metro バンドラーや Fast Refresh が動かないときのトラブルシューティングRork 生成コードのランタイムエラーを直す方法 もあわせて読むと、ビルド時・実行時両面の知識がつながります。

React Native / Expo の Metro の挙動を腰を据えて

次にこのエラーが出たときは、まず npx expo installnpx expo start -c の2つを試してみてください。経験上、これだけで7〜8割のケースは解決します。

シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

開発ツール2026-04-24
Metro bundlerが固まる・Fast Refreshが効かない時の診断手順
Rorkで生成したExpoアプリでMetro bundlerが固まる、Fast Refreshが反映されない——そんな時に順番にチェックすべき診断ステップと、安全なリセット手順をまとめました。
開発ツール2026-07-08
SVGアイコンがExpo Goでは出るのにビルドで消える — Rork製アプリでSVGを確実に表示する
Rork や Expo のアプリで .svg ファイルを import してもアイコンが表示されない、色が反映されないという問題を、metro.config.js と react-native-svg-transformer の設定、currentColor によるテーマ追従まで実際のコードで解決します。
開発ツール2026-06-01
Metro・EASのビルドが『JavaScript heap out of memory』で落ちるときの対処
RorkやExpoのアプリをビルドしている途中で『FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory』が出て止まる——その原因と、ローカル・EAS両方での具体的な対処をまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →