コンテンツへスキップ
App RouterAPI リファレンスエッジランタイム

エッジランタイム

Next.js エッジランタイムはミドルウェアに使用され、以下の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ストリームのための連結可能なエンコーダ

Stream API

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

Crypto 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または同様のルーチンによって以前に作成されたURIをデコードする
decodeURIComponentencodeURIComponentまたは同様のルーチンによって以前に作成された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は**サポートされていません**。たとえば、ファイルシステムの読み書きはできません。
  • node_modulesは、ESモジュールを実装し、ネイティブNode.js APIを使用しない限り、使用できます
  • 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で実行されると、例外が発生し、ランタイムエラーが発生しますので注意してください。