Vercelデプロイで「Missing Routes Manifest」エラー?Turborepo/Nx環境での解決策を徹底解説!

投稿日:
更新日:

1. はじめに:Vercelとモノレポ環境における「Missing Routes Manifest」エラーとは?

Vercelは、ReactやNext.jsなどのJavaScriptフレームワークを使ったWebアプリケーションを簡単にデプロイできるプラットフォームです。一方、TurborepoやNxは、複数のプロジェクトを一つのリポジトリで管理するモノレポ(Monorepo)と呼ばれる構成を効率的に行うためのツールです。

「Missing Routes Manifest」エラーは、Vercelがデプロイに必要なルーティング情報(どのURLにどのファイルが対応するか)を記述したファイル(routes-manifest.jsonなど)を見つけられない場合に発生します。モノレポ環境では、複数のプロジェクトが混在しているため、Vercelがどのプロジェクトをデプロイ対象とするか、どのディレクトリからルーティング情報を探すべきかを正しく認識できないことが原因となります。

2. エラーの原因を特定する:Turborepo/Nx環境特有の問題点

モノレポ環境で「Missing Routes Manifest」エラーが発生する主な原因は以下の通りです。

  • ルートディレクトリの誤り: Vercelがプロジェクトのルートディレクトリを正しく認識していない。
  • 出力ディレクトリの誤り: ビルドされたファイルの出力先ディレクトリがVercelに正しく設定されていない。
  • 依存関係の解決失敗: 必要な依存関係が正しくインストールされていない。
  • ビルドスクリプトの問題: ビルドスクリプトがルーティング情報を正しく生成していない。

3. 解決策:ステップバイステップでエラーを解消!

エラーの原因を特定したら、以下の手順で解決を試みましょう。

3.1 Vercelの設定を確認する

まず、Vercelのプロジェクト設定を確認します。

  1. ルートディレクトリの設定: Vercelのプロジェクト設定画面で、「Root Directory」が正しいプロジェクトのディレクトリを指しているか確認します。例えば、apps/my-app のように、デプロイしたいアプリケーションのディレクトリを指定します。
  2. # 例:Vercelプロジェクト設定画面
    Root Directory: apps/my-app
    
  3. ビルド設定の確認: 「Build Command」と「Output Directory」が正しい設定になっているか確認します。TurborepoやNxを使用している場合、ビルドコマンドは通常、ルートディレクトリで実行されるため、出力ディレクトリは相対パスで指定する必要があります。
  4. # 例:Vercelプロジェクト設定画面
    Build Command: npm run build
    Output Directory: dist/apps/my-app
    
  5. 補足: npm run build は、package.json に定義された build スクリプトを実行するコマンドです。Output Directory は、ビルドされたファイルが生成されるディレクトリを指定します。

3.2 ビルドスクリプトを修正する

package.json に定義されたビルドスクリプトが、ルーティング情報を正しく生成しているか確認します。Next.jsを使用している場合は、next build コマンドが実行されていることを確認してください。

// 例:package.json
{
  "scripts": {
    "build": "next build"
  }
}

  • 補足: Next.jsの next build コマンドは、pages ディレクトリや app ディレクトリにあるファイルを解析し、ルーティング情報を routes-manifest.json ファイルに生成します。

3.3 依存関係を再インストールする

依存関係が正しくインストールされていない場合、ビルドが失敗し、ルーティング情報が生成されないことがあります。以下のコマンドを実行して、依存関係を再インストールしてください。

npm install
# または
yarn install
# または
pnpm install

  • 補足: npm install, yarn install, pnpm install は、package.json に記述された依存関係をインストールするコマンドです。

3.4 Turborepo/Nxの設定を確認する

TurborepoやNxの設定ファイル(turbo.jsonnx.json)が、Vercelのデプロイに適した設定になっているか確認します。特に、キャッシュの設定や、依存関係の解決方法などが影響する場合があります。

// 例:turbo.json
{
  "pipeline": {
    "build": {
      "dependsOn": ["^build"],
      "outputs": ["dist/**", ".next/**"]
    }
  }
}

  • 補足: turbo.json は、Turborepoのタスク実行順序やキャッシュの設定を記述するファイルです。outputs には、タスクの実行結果として生成されるファイルを指定します。

3.5 環境変数を設定する

Vercelの環境変数設定が、ビルドに必要な値に設定されているか確認します。例えば、APIキーやデータベースの接続情報などが環境変数として設定されている場合、それらが正しく設定されているか確認してください。

3.6 ローカル環境でビルドを試す

Vercelにデプロイする前に、ローカル環境でビルドを試してみましょう。これにより、Vercel特有の問題なのか、それともビルド自体に問題があるのかを切り分けることができます。

npm run build
# または
yarn build
# または
pnpm build

ビルドが成功したら、出力ディレクトリに routes-manifest.json ファイルが存在することを確認してください。

4. より高度な解決策:Vercel CLIを活用する

Vercel CLI(Command Line Interface)を使うと、ローカル環境からVercelにデプロイしたり、設定を管理したりすることができます。Vercel CLIを使ってデプロイすることで、VercelのWebインターフェースだけでは設定できない詳細な設定を行うことができます。

  1. Vercel CLIをインストール:
  2. npm install -g vercel
    # または
    yarn global add vercel
    # または
    pnpm add -g vercel
    
  3. Vercelにログイン:
  4. vercel login
    
  5. デプロイ:
  6. vercel deploy --prod
    
  7. 補足: --prod オプションは、本番環境にデプロイすることを意味します。

5. まとめ:エラーを克服し、スムーズなデプロイを実現!

この記事では、Vercelデプロイ時に「Missing Routes Manifest」エラーが発生する原因と解決策について解説しました。

  • エラーの原因: ルートディレクトリ、出力ディレクトリ、依存関係、ビルドスクリプト、Turborepo/Nxの設定などの誤り
  • 解決策: Vercelの設定確認、ビルドスクリプト修正、依存関係再インストール、Turborepo/Nxの設定確認、環境変数設定、ローカル環境でのビルドテスト、Vercel CLIの活用

これらの解決策を試すことで、エラーを克服し、スムーズなデプロイを実現できるはずです。

次のステップ: