Edge Runtime
Next.js ではアプリケーションで使用できる2つのサーバーランタイムを提供しています:
- Node.js ランタイム (デフォルト): すべての Node.js API にアクセス可能で、アプリケーションのレンダリングに使用されます。
- Edge ランタイム: 制限された API セット を含み、Middleware で使用されます。
注意事項
- Edge ランタイムはすべての Node.js API をサポートしていません。一部のパッケージは期待通りに動作しない可能性があります。
- Edge ランタイムは インクリメンタル静的再生成 (ISR) をサポートしていません。
- どちらのランタイムも、デプロイアダプターに応じて ストリーミング をサポートできます。
リファレンス
Edge ランタイムは以下の API をサポートしています:
ネットワーク API
API | 説明 |
---|---|
Blob | バイナリデータを表す |
fetch | リソースを取得する |
FetchEvent | フェッチイベントを表す |
File | ファイルを表す |
FormData | フォームデータを表す |
Headers | HTTP ヘッダーを表す |
Request | HTTP リクエストを表す |
Response | HTTP レスポンスを表す |
URLSearchParams | URL 検索パラメータを表す |
WebSocket | WebSocket 接続を表す |
エンコーディング API
API | 説明 |
---|---|
atob | base-64 エンコードされた文字列をデコード |
btoa | 文字列を base-64 エンコード |
TextDecoder | Uint8Array を文字列にデコード |
TextDecoderStream | ストリーム用のチェーン可能なデコーダー |
TextEncoder | 文字列を Uint8Array にエンコード |
TextEncoderStream | ストリーム用のチェーン可能なエンコーダー |
ストリーム API
API | 説明 |
---|---|
ReadableStream | 読み取り可能なストリームを表す |
ReadableStreamBYOBReader | ReadableStream のリーダーを表す |
ReadableStreamDefaultReader | ReadableStream のデフォルトリーダーを表す |
TransformStream | 変換ストリームを表す |
WritableStream | 書き込み可能なストリームを表す |
WritableStreamDefaultWriter | WritableStream のライターを表す |
暗号化 API
API | 説明 |
---|---|
crypto | プラットフォームの暗号化機能へのアクセスを提供 |
CryptoKey | 暗号鍵を表す |
SubtleCrypto | ハッシュ、署名、暗号化/復号化などの一般的な暗号プリミティブへのアクセスを提供 |
Web 標準 API
API | 説明 |
---|---|
AbortController | 1つ以上のDOMリクエストを任意のタイミングで中止できるようにする |
Array | 値の配列を表す |
ArrayBuffer | 固定長の生のバイナリデータバッファを表す |
Atomics | アトミック操作を静的メソッドとして提供する |
BigInt | 任意精度の整数を表す |
BigInt64Array | 64ビット符号付き整数の型付き配列を表す |
BigUint64Array | 64ビット符号なし整数の型付き配列を表す |
Boolean | 論理値を表し、true とfalse の2つの値を持つ |
clearInterval | setInterval() で設定された繰り返し処理をキャンセルする |
clearTimeout | setTimeout() で設定された遅延処理をキャンセルする |
console | ブラウザのデバッグコンソールへのアクセスを提供する |
DataView | ArrayBuffer の汎用ビューを表す |
Date | プラットフォームに依存しない形式で単一の時点を表す |
decodeURI | encodeURI または類似のルーチンで作成されたURIをデコードする |
decodeURIComponent | encodeURIComponent または類似のルーチンで作成されたURIコンポーネントをデコードする |
DOMException | DOMで発生したエラーを表す |
encodeURI | 特定の文字をUTF-8エンコーディングを表す1~4つのエスケープシーケンスに置き換えてURIをエンコードする |
encodeURIComponent | 特定の文字をUTF-8エンコーディングを表す1~4つのエスケープシーケンスに置き換えてURIコンポーネントをエンコードする |
Error | 文の実行やプロパティへのアクセス時に発生するエラーを表す |
EvalError | グローバル関数eval() に関連するエラーを表す |
Float32Array | 32ビット浮動小数点数の型付き配列を表す |
Float64Array | 64ビット浮動小数点数の型付き配列を表す |
Function | 関数を表す |
Infinity | 数学的な無限大の値を表す |
Int8Array | 8ビット符号付き整数の型付き配列を表す |
Int16Array | 16ビット符号付き整数の型付き配列を表す |
Int32Array | 32ビット符号付き整数の型付き配列を表す |
Intl | 国際化(i18n)と地域化(l10n)機能へのアクセスを提供する |
isFinite | 値が有限数かどうかを判定する |
isNaN | 値がNaN かどうかを判定する |
JSON | JavaScriptの値とJSON形式の相互変換機能を提供する |
Map | 各値が一度だけ出現する値のコレクションを表す |
Math | 数学関数と定数へのアクセスを提供する |
Number | 数値を表す |
Object | すべてのJavaScriptオブジェクトの基底となるオブジェクトを表す |
parseFloat | 文字列引数を解析して浮動小数点数を返す |
parseInt | 文字列引数を解析して指定された基数の整数を返す |
Promise | 非同期操作の最終的な完了(または失敗)とその結果の値を表す |
Proxy | 基本的な操作(プロパティ検索、代入、列挙、関数呼び出しなど)のカスタム動作を定義するために使用されるオブジェクトを表す |
queueMicrotask | マイクロタスクをキューに入れて実行する |
RangeError | 値が許可された値のセットまたは範囲にない場合のエラーを表す |
ReferenceError | 存在しない変数が参照された場合のエラーを表す |
Reflect | インターセプト可能なJavaScript操作のメソッドを提供する |
RegExp | 正規表現を表し、文字の組み合わせをマッチさせる |
Set | 各値が一度だけ出現する値のコレクションを表す |
setInterval | 一定の時間間隔で関数を繰り返し呼び出す |
setTimeout | 指定したミリ秒後に関数を呼び出すか式を評価する |
SharedArrayBuffer | 固定長の生のバイナリデータバッファを表す |
String | 文字のシーケンスを表す |
structuredClone | 値のディープコピーを作成する |
Symbol | オブジェクトプロパティのキーとして使用されるユニークで不変のデータ型を表す |
SyntaxError | 構文的に無効なコードを解釈しようとした場合のエラーを表す |
TypeError | 値が期待された型ではない場合のエラーを表す |
Uint8Array | 8ビット符号なし整数の型付き配列を表す |
Uint8ClampedArray | 0-255にクランプされた8ビット符号なし整数の型付き配列を表す |
Uint32Array | 32ビット符号なし整数の型付き配列を表す |
URIError | グローバルURI処理関数が誤って使用された場合のエラーを表す |
URL | オブジェクトURLを作成するための静的メソッドを提供するオブジェクトを表す |
URLPattern | URLパターンを表す |
URLSearchParams | キー/値ペアのコレクションを表す |
WeakMap | キーが弱参照されているキー/値ペアのコレクションを表す |
WeakSet | 各オブジェクトが一度だけ出現するオブジェクトのコレクションを表す |
WebAssembly | WebAssemblyへのアクセスを提供する |
Next.js 固有のポリフィル
環境変数
next dev
と next build
の両方で環境変数にアクセスするために process.env
を使用できます。
サポートされていない API
Edge Runtime には以下のような制限があります:
- ネイティブの Node.js API はサポートされていません。例えば、ファイルシステムの読み書きはできません。
node_modules
は使用_可能_ですが、ES モジュールを実装しており、ネイティブの Node.js API を使用していない場合に限ります。require
の直接呼び出しは許可されていません。代わりに ES モジュールを使用してください。
以下の JavaScript 言語機能は無効化されており、動作しません:
API | 説明 |
---|---|
eval | 文字列として表現された JavaScript コードを評価する |
new Function(evalString) | 引数として提供されたコードで新しい関数を作成する |
WebAssembly.compile | バッファソースから WebAssembly モジュールをコンパイルする |
WebAssembly.instantiate | バッファソースから WebAssembly モジュールをコンパイル・インスタンス化する |
まれなケースとして、コードに(またはインポートしたモジュールに)ランタイム時に到達できない動的コード評価文が含まれており、ツリーシェイキングで削除できない場合があります。 Middleware 設定で特定のファイルを許可するようにチェックを緩和できます:
unstable_allowDynamic
は glob、または glob の配列で、特定のファイルに対する動的コード評価を無視します。glob はアプリケーションのルートフォルダからの相対パスです。
これらの文が Edge で実行された場合、_エラーがスローされランタイムエラーを引き起こす_ことに注意してください。