Edge Runtime (エッジランタイム)
Next.js の Edge Runtime は標準的な Web API に基づいており、以下の API をサポートしています:
ネットワーク API
API | 説明 |
---|---|
Blob | 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)とローカライゼーション機能へのアクセスを提供する |
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 や Edge API Route の設定エクスポートで特定のファイルを許可するようにチェックを緩和できます:
export const config = {
runtime: 'edge', // Edge API Routes のみ
unstable_allowDynamic: [
// 単一のファイルを許可
'/lib/utilities.js',
// サードパーティモジュール function-bind 内のすべてを許可するために glob を使用
'/node_modules/function-bind/**',
],
}
unstable_allowDynamic
は glob または glob の配列で、特定のファイルに対する動的コード評価を無視します。glob はアプリケーションのルートフォルダからの相対パスです。
これらのステートメントが Edge で実行された場合、ランタイムエラーが発生することに注意してください。