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

Edge Runtime

Next.js Edge ランタイムは標準的な Web API をベースにしており、以下の API をサポートしています:

Network APIs

API説明
Blobblob
fetchリソースをフェッチする
FetchEventfetch イベント
Fileファイル
FormDataフォームデータ
HeadersHTTP ヘッダー
RequestHTTP リクエスト
ResponseHTTP レスポンス
URLSearchParamsURL の search パラメータ
WebSocketwebsocket 接続

Encoding APIs

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

Stream APIs

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

Crypto APIs

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

Web Standard APIs

API説明
AbortController1 つまたは複数の 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 つのエスケープシーケンスで置き換えることによって、統一資源識別子(URI)をエンコードする
encodeURIComponent特定の文字の各インスタンスを、その文字の UTF-8 エンコーディングを表す 1 つ、2 つ、3 つ、または 4 つのエスケープシーケンスで置き換えることによって、統一資源識別子(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存在しない変数が参照された場合のエラー
ReflectJavaScript 操作を受け付けるためのメソッドを提供する
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 Specific Polyfills

環境変数

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 または Edge API Route にエクスポートされた設定で特定のファイルを許可できます:

export const config = {
runtime: 'edge', // Edge API Routesのための指定
unstable_allowDynamic: [
// 単一のファイルを許可する
'/lib/utilities.js',
// 3rdパーティのfunction-bindモジュール内のすベてをglobで許可する
'/node_modules/function-bind/**',
],
}

unstable_allowDynamicは、特定のファイルの動的コード評価を無視するglob(または glob の配列)です。glob は、アプリケーションのルート・フォルダからの相対パスで指定します。

これらの文が Edge で実行されると、実行時エラーが発生することに注意してください。