◉RORK LABEN
●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…
記事一覧/Rork入門
◈ Rork入門/2026-03-21初級

Rork でアプリがビルドできないとき、最初に切り分ける 8 つの症状

Rork でアプリがビルドできない、白い画面のまま進まない、ホットリロードが効かない。そんな症状を「どの層の問題か」から切り分ける FAQ です。依存関係の競合、Expo モジュール未解決、シミュレーター、生成フリーズ、Fix Now の使いどころまで 8 問で整理します。

Rork584ビルドエラー9トラブルシューティング85初心者22FAQ

個人開発でアプリを作っていると、ビルドが通らない夜に必ず当たります。エラーの文面を検索して、出てきた手順を片っ端から試して、気づけば別の場所まで壊していました。最初のうち、私はこの回り道をたびたびしていました。

いま振り返ると、原因は「手順を知らなかったこと」より、どの層で起きているのかを見ずに直そうとしたことにありました。依存パッケージの問題なのか、開発環境の問題なのか、Rork 側の生成の問題なのか。層がわかれば、試す手順はほとんど一つに絞れます。

この FAQ は 8 つの症状を、その層ごとに並べ直したものです。上から順に読むより、いま出ている症状の Q だけ開いていただければ十分です。

まず切り分けの早見表です。

症状疑う層見る Q
ビルド失敗・peer dependency の文言パッケージQ1
Unable to resolve moduleパッケージ/キャッシュQ2
シミュレーターが起動しない開発環境(Xcode)Q3
エミュレーターが白い画面のまま開発環境(Android)Q4
生成が途中で止まるRork 側/通信Q5
画像やアイコンが出ないアセット/パスQ6
変更が反映されないMetro/接続Q7
エラーに Fix Now が出ているコード(機械的な誤り)Q8

Q1: 「ビルドに失敗しました」と出ます。依存関係の競合とは何ですか?

A: もっとも多い原因は、複数のパッケージが互いに合わないバージョンを要求している状態です。たとえばパッケージ A はライブラリ X の 1.x を、パッケージ B は 2.x を必要としている、といった具合です。

エラーログに conflicting peer dependency や ERESOLVE と出ていれば、ほぼこれです。

# 依存を作り直す(node_modules と lock を捨てて入れ直す)
rm -rf node_modules package-lock.json
npm cache clean --force
npm install

それでも npm install が止まる場合は、--legacy-peer-deps を付けると peer 依存の厳密なチェックを緩めて進められます。

npm install --legacy-peer-deps

:::warning --legacy-peer-deps は競合を「解決」するのではなく「見ないことにする」オプションです。通ったあとでアプリが起動するか必ず確かめ、動かなければ、ログに名前が出ているパッケージのバージョンを揃える方向へ戻ります。 :::

Expo SDK に紐づくパッケージ(expo-* や react-native-* の一部)は、npm install ではなく次のコマンドで SDK 版に合う版へ揃えるのが安全です。

npx expo install --fix

Q2: Expo モジュールが見つからないというエラーが出ます

A: Unable to resolve module や Cannot find module は、依存が入っていないか、Metro のキャッシュが古いかのどちらかであることがほとんどです。

# 1. lock ファイルどおりに入れ直す
npm ci
 
# 2. Metro のキャッシュを捨てて起動
npx expo start --clear

以前の記事や古い解説では npm install -g expo-cli を勧めているものがありますが、グローバルの expo-cli は現在は使わず、プロジェクト内の npx expo ... を使うのが基本です。グローバルに古い版が残っていると、プロジェクトの SDK 版とずれて余計な混乱を呼びます。

npx expo --version   # プロジェクトに入っている Expo の版が出れば OK

手触りとして覚えておきたいのは、npm ci は「lock に書かれた状態を再現する」コマンドで、npm install は「いまの状態から良さそうに整える」コマンドだということです。再現したいときは ci です。

Q3: iOS シミュレーターが起動しません

A: 層は開発環境です。コードはほぼ関係しません。順に疑う場所は 3 つです。

Xcode とコマンドラインツール(macOS のみ)

xcode-select --install
xcode-select -p   # パスが表示されれば有効

シミュレーターの実体

xcrun simctl list devices available
xcrun simctl boot "iPhone 16 Pro"   # 一覧に出た名前を指定

ポート 8081 の取り合い

lsof -i :8081          # 占有しているプロセスを確認
npx expo start -p 8082 # 別ポートで起動

:::tip どうしてもシミュレーターが言うことを聞かない夜は、実機の Expo Go で確認する手があります。シミュレーター固有の不具合を丸ごと迂回できるので、アプリ側の問題かどうかを先に確かめられます。 :::

Q4: Android エミュレーターが白い画面のまま動きません

A: 白い画面は「何も描画できていない」状態で、原因はビルド未完了、JDK、エミュレーターの余力、接続の 4 か所に分かれます。

まず Metro のキャッシュを捨てて再起動します。

npx expo start --clear

ターミナルに bundling の進行が出ているのを確かめてから、エミュレーターを r でリロードします。進行が出ていない場合は、エミュレーターではなくターミナル側に原因があります。

JDK を確認します。

java -version

Expo の推奨する JDK は SDK 版ごとに変わります。ここでは数字を固定せず、お使いの Expo SDK の公式ドキュメントで JDK の要件を確かめていただくのが確実です。

エミュレーターのメモリが少ない場合は、Android Studio の Device Manager から該当デバイスを編集し、RAM を増やします。それでも改善しなければ、一度 Cold Boot(保存済み状態を使わない起動)を試します。

:::warning 白い画面のとき、画面そのものを見つめても答えは出ません。答えはたいていターミナルの赤い行に書いてあります。 :::

Q5: プロンプトからアプリが生成されません。生成が止まってしまいます

A: 層は Rork 側と通信です。コードを触る前にできることが 3 つあります。

1 つ目は、プロンプトを小さくすること。機能を一度にすべて書き込むと、生成が長引いて止まったように見えます。基本機能だけで作らせて、あとから足すほうが結果は安定します。

// 詰め込みすぎ
「チャットアプリ。リアルタイム通知、プロフィール画像、検索、
グループ、ボイスメッセージ、ビデオ通話、ブロック、既読…」

// 小さく始める
「チャットアプリ。ユーザーはメッセージを送受信できる。
UI はシンプルで十分。」

2 つ目は、通信の確認です。Wi-Fi が不安定なときは生成が途中で止まります。切り替えてから、もう一度試します。

3 つ目は、ブラウザ側の余裕です。タブを多く開いていると重くなります。不要なタブを閉じ、改善しなければ別のブラウザで試します。

Q6: 画像やアイコンが表示されません

A: 多くはパスかパッケージ名の取り違えです。

画像は相対パスの階層を 1 つ間違えるだけで消えます。

// ファイルの位置に対してパスを数え直す
<Image source={require('../../assets/images/my-image.png')} />

アイコンは、@expo/vector-icons を使うのが標準です。パッケージ名の取り違えがよくあります。

npx expo install @expo/vector-icons

ファイル名にスペースや日本語が入っていると、環境によって解決に失敗します。英数字とハイフンかアンダースコアだけにしておくと安全です。表示が古いままなら、npx expo start -c でキャッシュを捨てます。

Q7: ホットリロードが効きません。変更が反映されません

A: 現在の Expo では Fast Refresh が既定で有効なので、--hot のようなフラグは不要です。効かないときは、次の順で確認します。

  1. 保存されているか。エディタのタブに未保存の印が付いていないか。
  2. 構文エラーがないか。赤いエラー画面が出ていれば、直すまで反映されません。
  3. 接続が切れていないか。端末と開発 PC が同じネットワークにいるかを確認します。
  4. 開発者メニューから Reload。iOS シミュレーターは Cmd + D、Android エミュレーターは Cmd + M(Windows は Ctrl + M)です。

それでも直らなければ、Metro を止めて npx expo start --clear で起動し直します。

:::tip 反映が 1〜2 秒遅れるのは異常ではありません。開発中の React が、確認のために同じ描画を 2 回行うことがあるためです(本番ビルドでは起きません)。 :::

Q8: 「Fix Now」ボタンは使っても大丈夫ですか?

A: 使いどころを選べば、とても頼れます。Rork はビルドや実行でエラーが起きると、エラー内容のすぐ下に「Fix Now」を表示することがあります。エラーメッセージと前後のコードを AI に渡し、修正案を適用する機能です。

得意なのは、原因がメッセージに書いてあるエラーです。 閉じ忘れた括弧、import の書き忘れ、存在しない関数名、型の不一致など。この種類は、一度押すだけで解決することが多いです。

苦手なのは、コードの外に原因があるエラーです。 依存関係の競合(Q1)、シミュレーターやエミュレーターの不調(Q3・Q4)、生成のフリーズ(Q5)。これらは「コードを直す」問題ではないので、見当違いの修正が当たってしまうことがあります。

私は次の順で使っています。

  1. まず、メッセージを一度自分で読みます
  2. 構文や import 系のエラーなら、Fix Now を押します
  3. 適用された差分に、必ず目を通します
  4. 同じ Fix Now を 2 回続けても直らなければ、止めて Q1〜Q7 の層の切り分けに戻ります

中身を見ずに押し続けないこと——この一線だけは守るようにしています。AI が別の場所まで書き換えて、状況がかえって複雑になることがあるからです。

次の一歩

ビルドエラーに出会ったら、まずエラーメッセージを最後まで読み、「パッケージ・開発環境・Rork 側・コード」のどの層かを一つ決めます。そのうえで、その層の Q だけを試します。

いま振り返ると、焦っているときほど最初の赤い行を飛ばしていたのだと思います。今夜ビルドが通らずに困っている方は、ターミナルの最初の赤い行をコピーして、早見表の症状と見比べてみていただければと思います。

シェア

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

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

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

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

関連記事

◈ Rork 入門2026-08-29
30日で9回出た Expo のパッチのうち、自分のアプリに入っているのはどれかを確かめる
package.json にチルダ付きで書いてあれば最新のパッチが入る、と思い込んでいました。実際に入る版を決めているのは package-lock.json のほうです。npm の解決結果を実行して確かめた記録です。
◈ Rork 入門2026-08-28
Sunset.png と sunset.png は、手元の Mac では同じファイル、ビルドサーバーでは別のファイルです
手元では表示される画像が、クラウドのビルドだけで見つからない。原因はファイル名の大文字小文字でした。再現手順と、コミット前に検出する短いスクリプトを実測つきで残します。
◈ Rork 入門2026-08-17
Rork のコードをエクスポートしたら、git init より先に .gitignore を用意します
Rork からエクスポートしたプロジェクトをそのまま git init すると、鍵や .env まで履歴に載ります。除外設定を先に置いた場合と後から足した場合の差を実際に測り、効く書き方と効かない書き方を確かめました。