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のプロジェクト設定を確認します。
- ルートディレクトリの設定: Vercelのプロジェクト設定画面で、「Root Directory」が正しいプロジェクトのディレクトリを指しているか確認します。例えば、
apps/my-app
のように、デプロイしたいアプリケーションのディレクトリを指定します。 - ビルド設定の確認: 「Build Command」と「Output Directory」が正しい設定になっているか確認します。TurborepoやNxを使用している場合、ビルドコマンドは通常、ルートディレクトリで実行されるため、出力ディレクトリは相対パスで指定する必要があります。
- 補足:
npm run build
は、package.json
に定義されたbuild
スクリプトを実行するコマンドです。Output Directory
は、ビルドされたファイルが生成されるディレクトリを指定します。
# 例:Vercelプロジェクト設定画面
Root Directory: apps/my-app
# 例:Vercelプロジェクト設定画面
Build Command: npm run build
Output Directory: dist/apps/my-app
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.json
や nx.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インターフェースだけでは設定できない詳細な設定を行うことができます。
- Vercel CLIをインストール:
- Vercelにログイン:
- デプロイ:
- 補足:
--prod
オプションは、本番環境にデプロイすることを意味します。
npm install -g vercel
# または
yarn global add vercel
# または
pnpm add -g vercel
vercel login
vercel deploy --prod
5. まとめ:エラーを克服し、スムーズなデプロイを実現!
この記事では、Vercelデプロイ時に「Missing Routes Manifest」エラーが発生する原因と解決策について解説しました。
- エラーの原因: ルートディレクトリ、出力ディレクトリ、依存関係、ビルドスクリプト、Turborepo/Nxの設定などの誤り
- 解決策: Vercelの設定確認、ビルドスクリプト修正、依存関係再インストール、Turborepo/Nxの設定確認、環境変数設定、ローカル環境でのビルドテスト、Vercel CLIの活用
これらの解決策を試すことで、エラーを克服し、スムーズなデプロイを実現できるはずです。
次のステップ:
- Vercelのドキュメントを読む: https://vercel.com/docs
- Turborepoのドキュメントを読む: https://turbo.build/
- Nxのドキュメントを読む: https://nx.dev/