メインコンテンツまでスキップ

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真理値を表現し、true または false の 2 つの値を持つことができる
clearInterval以前の setInterval() 呼び出しによって設定されたタイミングのある反復アクションをキャンセルする
clearTimeout以前の setTimeout() 呼び出しによって設定されたタイミングのある反復アクションをキャンセルする
consoleブラウザのデバッグコンソールへのアクセスを提供
DataViewArrayBuffer の汎用なビューを表現
Dateプラットフォームに依存しない形式での時間の単一の瞬間を表現
decodeURI以前に encodeURI や同様のルーチンによって作成された URI をデコード
decodeURIComponent以前に encodeURIComponent や同様のルーチンによって作成された URI コンポーネントをデコード
DOMExceptionDOM で発生するエラーを表現
encodeURIUTF-8 エンコーディングを表現するために特定の文字をエスケープシーケンスに置き換えることによって URI をエンコード
encodeURIComponentUTF-8 エンコーディングを表現するために特定の文字をエスケープシーケンスに置き換えることによって 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 dev および next build環境変数 へアクセスできます。

サポートされていない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.ts
export const config = {
unstable_allowDynamic: [
// 単一のファイルを許可
'/lib/utilities.js',
// グロブを使用して function-bind サードパーティ モジュール内のものすべてを許可
'/node_modules/function-bind/**',
],
}

unstable_allowDynamic は、特定のファイルの動的コード評価を無視する グロブ またはグロブの配列です。グロブはアプリケーションの root フォルダに対する相対パスです。

これらのステートメントが Edge で実行されると、例外が発生し、ランタイムエラーが発生する ので注意が必要です。