Menu

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で発生するエラーを表します
encodeURIUniform Resource Identifier(URI)を、各文字のUTF-8エンコーディングを表す1、2、3、または4つのエスケープシーケンスに置き換えてエンコードします
encodeURIComponentUniform Resource Identifier(URI)コンポーネントを、各文字のUTF-8エンコーディングを表す1、2、3、または4つのエスケープシーケンスに置き換えてエンコードします
Errorステートメントの実行またはプロパティのアクセス時のエラーを表します
EvalErrorグローバル関数eval()に関するエラーを表します
Float32Array32ビット浮動小数点数の型付き配列を表します
Float64Array64ビット浮動小数点数の型付き配列を表します
Function関数を表します
Infinity数学的な無限大の値を表します
Int8Array8ビット符号付き整数の型付き配列を表します
Int16Array16ビット符号付き整数の型付き配列を表します
Int32Array32ビット符号付き整数の型付き配列を表します
Intl国際化とローカライズ機能へのアクセスを提供します
isFinite値が有限数であるかを判定します
isNaN値がNaNかどうかを判定します
JSONJavaScriptの値とJSONフォーマット間の変換機能を提供します
Map各値が1回のみ出現可能な値のコレクションを表します
Math数学的関数と定数へのアクセスを提供します
Number数値を表します
ObjectすべてのJavaScriptオブジェクトの基礎となるオブジェクトを表します
parseFloat文字列引数を解析し、浮動小数点数を返します
parseInt文字列引数を解析し、指定された基数の整数を返します
Promise非同期操作の最終的な完了(または失敗)とその結果の値を表します
Proxy基本的な操作(プロパティの参照、代入、列挙、関数呼び出しなど)のカスタム動作を定義するために使用されるオブジェクトを表します
queueMicrotask実行するマイクロタスクをキューに入れます
RangeError値が許可された値のセットまたは範囲内にない場合のエラーを表します
ReferenceError存在しない変数が参照された場合のエラーを表します
Reflectインターセプト可能なJavaScriptの操作のメソッドを提供します
RegExp文字の組み合わせを一致させることができる正規表現を表します
Set各値が1回のみ出現可能な値のコレクションを表します
setInterval関数を、各呼び出しの間に固定された時間遅延をもって繰り返し呼び出します
setTimeout指定されたミリ秒数後に関数を呼び出すか、式を評価します
SharedArrayBuffer汎用の固定長生のバイナリデータバッファを表します
String文字のシーケンスを表します
structuredClone値の深いコピーを作成します
Symbolオブジェクトプロパティのキーとして使用される一意で変更不可能なデータ型を表します
SyntaxError構文的に無効なコードを解釈しようとした際のエラーを表します
TypeError値が予期された型でない場合のエラーを表します
Uint8Array8ビット符号なし整数の型付き配列を表します
Uint8ClampedArray0-255にクランプされた8ビット符号なし整数の型付き配列を表します
Uint32Array32ビット符号なし整数の型付き配列を表します
URIErrorグローバルURI処理関数が誤った方法で使用された場合のエラーを表します
URLオブジェクトURLを作成するための静的メソッドを提供するオブジェクトを表します
URLPatternURLパターンを表します
URLSearchParamsキー/値のペアのコレクションを表します
WeakMapキーが弱参照されるキー/値のペアのコレクションを表します
WeakSet各オブジェクトが1回のみ出現可能なオブジェクトのコレクションを表します
WebAssemblyWebAssemblyへのアクセスを提供します

Next.js 固有のポリフィル

環境変数

next devnext build の両方で環境変数には process.env を使用できます。

サポートされていないAPI

Edge Runtimeには以下のような制限があります:

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

以下のJavaScriptの言語機能は無効化されており、動作しません:

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

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

middleware.ts
export const config = {
  unstable_allowDynamic: [
    // 単一のファイルを許可
    '/lib/utilities.js',
    // グロブを使用してfunction-bind サードパーティモジュール内のすべてを許可
    '/node_modules/function-bind/**',
  ],
}

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

警告:これらの文がEdge上で実行された場合、実行時エラーをスローします