コンテンツへスキップ

Edge Runtime

Next.js Edge Runtimeは、ミドルウェアで使用され、次のAPIをサポートしています。

ネットワークAPI

API説明
BlobBlobを表します。
fetchリソースを取得します。
FetchEventフェッチイベントを表します。
Fileファイルを表現します。
FormDataフォームデータを表します。
HeadersHTTPヘッダーを表します。
RequestHTTPリクエストを表します。
ResponseHTTPレスポンスを表します。
URLSearchParamsURL検索パラメータを表します。
WebSocketWebSocket接続を表します。

エンコーディングAPI

API説明
atobbase-64でエンコードされた文字列をデコードします。
btoa文字列をbase-64でエンコードします。
TextDecoderUint8Arrayを文字列にデコードします。
TextDecoderStreamストリーム用のチェーン可能なデコーダーです。
TextEncoder文字列をUint8Arrayにエンコードします。
TextEncoderStreamストリーム用のチェーン可能なエンコーダーです。

ストリームAPI

API説明
ReadableStream読み取り可能なストリームを表します。
ReadableStreamBYOBReaderReadableStreamのリーダーを表します。
ReadableStreamDefaultReaderReadableStreamのリーダーを表します。
TransformStream変換ストリームを表します。
WritableStream書き込み可能なストリームを表します。
WritableStreamDefaultWriterWritableStreamのライターを表します。

暗号化API

API説明
cryptoプラットフォームの暗号化機能へのアクセスを提供します。
CryptoKey暗号化キーを表します。
SubtleCryptoハッシュ、署名、暗号化、復号化などの一般的な暗号化プリミティブへのアクセスを提供します。

Web標準API

API説明
AbortController必要に応じて1つ以上のDOMリクエストを中止することができます。
Array値の配列を表します。
ArrayBuffer汎用的な固定長の生のバイナリデータバッファを表します。
Atomicsアトミック操作を静的メソッドとして提供します。
BigInt任意精度の整数を表します。
BigInt64Array64ビット符号付き整数の型付き配列を表します。
BigUint64Array64ビット符号なし整数の型付き配列を表します。
Boolean論理エンティティを表し、truefalseの2つの値を持つことができます。
clearIntervalsetInterval()の呼び出しによって以前に確立された、時間制限のある繰り返しアクションを取り消します。
clearTimeoutsetTimeout()の呼び出しによって以前に確立された、時間制限のある繰り返しアクションを取り消します。
consoleブラウザのデバッグコンソールへのアクセスを提供します。
DataViewArrayBufferの汎用ビューを表します。
Dateプラットフォームに依存しない形式で、単一の時点を表します。
decodeURIencodeURIまたは同様のルーチンによって以前に作成されたUniform Resource Identifier(URI)をデコードします。
decodeURIComponentencodeURIComponentまたは同様のルーチンによって以前に作成されたUniform Resource Identifier(URI)コンポーネントをデコードします。
DOMExceptionDOMで発生するエラーを表します。
encodeURI特定の文字の各インスタンスを、その文字のUTF-8エンコーディングを表す1つ、2つ、3つ、または4つのエスケープシーケンスに置き換えることによって、Uniform Resource Identifier(URI)をエンコードします。
encodeURIComponent特定の文字の各インスタンスを、その文字のUTF-8エンコーディングを表す1つ、2つ、3つ、または4つのエスケープシーケンスに置き換えることによって、Uniform Resource Identifier(URI)コンポーネントをエンコードします。
Errorステートメントの実行またはプロパティへのアクセス中に発生するエラーを表します。
EvalErrorグローバル関数eval()に関するエラーを表します。
Float32Array32ビット浮動小数点数型の配列を表します。
Float64Array64ビット浮動小数点数型の配列を表します。
Function関数を表します。
Infinity数学的な無限大の値を表します。
Int8Array8ビット符号付き整数の型付き配列を表します。
Int16Array16ビット符号付き整数の型付き配列を表します。
Int32Array32ビット符号付き整数の型付き配列を表します。
Intl国際化およびローカリゼーション機能へのアクセスを提供します。
isFinite値が有限の数値かどうかを判定します。
isNaN値がNaNかどうかを判定します。
JSONJavaScriptの値を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値が期待された型でない場合に発生するエラーを表します。
Uint8Array8ビット符号なし整数の型付き配列を表します。
Uint8ClampedArray0~255にクランプされた8ビット符号なし整数の型付き配列を表します。
Uint32Array32ビット符号なし整数の型付き配列を表します。
URIErrorグローバルなURI処理関数が間違った方法で使用された場合に発生するエラーを表します。
URLオブジェクトURLの作成に使用される静的メソッドを提供するオブジェクトを表します。
URLPatternURLパターンを表します。
URLSearchParamsキーと値のペアのコレクションを表します。
WeakMapキーが弱参照されるキーと値のペアのコレクションを表します。
WeakSet各オブジェクトが一度しか出現しない可能性のあるオブジェクトのコレクションを表します。
WebAssemblyWebAssemblyへのアクセスを提供します。

Next.js固有のポリフィル

環境変数

process.env を使用して、next devnext build の両方で環境変数にアクセスできます。

サポートされていないAPI

Edgeランタイムには、いくつかの制限があります。

  • ネイティブNode.js APIは**サポートされていません**。たとえば、ファイルシステムの読み書きはできません。
  • ESモジュールを実装し、ネイティブNode.js APIを使用しない限り、node_modulesは使用できます。
  • requireを直接呼び出すことは**許可されていません**。代わりにESモジュールを使用してください。

次のJavaScript言語機能は無効になっており、**動作しません**。

API説明
eval文字列として表されるJavaScriptコードを評価します。
new Function(evalString)引数として提供されたコードで新しい関数を生成します。
WebAssembly.compileバッファソースからWebAssemblyモジュールをコンパイルします。
WebAssembly.instantiateバッファソースからWebAssemblyモジュールをコンパイルしてインスタンス化します。

まれに、コードに(またはインポートに)実行時に到達できない動的なコード評価ステートメントが含まれている(またはインポートされている)場合があり、ツリーシェイキングによって削除できません。ミドルウェアの設定で特定のファイルに許可するチェックを緩和できます。

middleware.ts
export const config = {
  unstable_allowDynamic: [
    // allows a single file
    '/lib/utilities.js',
    // use a glob to allow anything in the function-bind 3rd party module
    '/node_modules/function-bind/**',
  ],
}

unstable_allowDynamicは、特定のファイルの動的なコード評価を無視するglob、またはglobの配列です。globはアプリケーションのルートフォルダを基準としています。

これらのステートメントがEdgeで実行されると、**ランタイムエラーが発生します**ので注意してください。