Edge Runtime
Next.jsのEdge Runtimeは、ミドルウェアで使用され、以下のAPIをサポートしています:
ネットワークAPI
API | 説明 |
---|---|
Blob | Blobを表します |
fetch | リソースをフェッチします |
FetchEvent | フェッチイベントを表します |
File | ファイルを表します |
FormData | フォームデータを表します |
Headers | HTTPヘッダーを表します |
Request | HTTPリクエストを表します |
Response | HTTPレスポンスを表します |
URLSearchParams | URLの検索パラメータを表します |
WebSocket | WebSocket接続を表します |
エンコーディングAPI
API | 説明 |
---|---|
atob | base-64エンコードされた文字列をデコードします |
btoa | 文字列をbase-64エンコードします |
TextDecoder | Uint8Arrayを文字列にデコードします |
TextDecoderStream | ストリーム用の連鎖可能なデコーダーです |
TextEncoder | 文字列をUint8Arrayにエンコードします |
TextEncoderStream | ストリーム用の連鎖可能なエンコーダーです |
ストリームAPI
API | 説明 |
---|---|
ReadableStream | 読み取り可能なストリームを表します |
ReadableStreamBYOBReader | ReadableStreamのリーダーを表します |
ReadableStreamDefaultReader | ReadableStreamのリーダーを表します |
TransformStream | 変換ストリームを表します |
WritableStream | 書き込み可能なストリームを表します |
WritableStreamDefaultWriter | WritableStreamのライターを表します |
暗号API
API | 説明 |
---|---|
crypto | プラットフォームの暗号機能へのアクセスを提供します |
CryptoKey | 暗号鍵を表します |
SubtleCrypto | ハッシュ、署名、暗号化または復号化などの一般的な暗号プリミティブへのアクセスを提供します |
Web標準API
API | 説明 |
---|---|
AbortController | 望むタイミングで1つ以上のDOMリクエストを中止できるようにします |
Array | 値の配列を表します |
ArrayBuffer | 汎用の固定長生のバイナリデータバッファを表します |
Atomics | 静的メソッドとしてアトミック操作を提供します |
BigInt | 任意の精度を持つ整数を表します |
BigInt64Array | 64ビット符号付き整数の型付き配列を表します |
BigUint64Array | 64ビット符号なし整数の型付き配列を表します |
Boolean | 論理エンティティを表し、true とfalse の2つの値を持つことができます |
clearInterval | setInterval() の呼び出しで以前に設定されたタイマーの繰り返しアクションをキャンセルします |
clearTimeout | setTimeout() の呼び出しで以前に設定されたタイマーの繰り返しアクションをキャンセルします |
console | ブラウザのデバッグコンソールへのアクセスを提供します |
DataView | ArrayBuffer の汎用ビューを表します |
Date | プラットフォームに依存しない形式で単一の時点を表します |
decodeURI | encodeURI や同様のルーチンで以前に作成されたUniform Resource Identifier(URI)をデコードします |
decodeURIComponent | encodeURIComponent や同様のルーチンで以前に作成されたUniform Resource Identifier(URI)コンポーネントをデコードします |
DOMException | DOMで発生するエラーを表します |
encodeURI | Uniform Resource Identifier(URI)を、各文字のUTF-8エンコーディングを表す1、2、3、または4つのエスケープシーケンスに置き換えてエンコードします |
encodeURIComponent | Uniform Resource Identifier(URI)コンポーネントを、各文字のUTF-8エンコーディングを表す1、2、3、または4つのエスケープシーケンスに置き換えてエンコードします |
Error | ステートメントの実行またはプロパティのアクセス時のエラーを表します |
EvalError | グローバル関数eval() に関するエラーを表します |
Float32Array | 32ビット浮動小数点数の型付き配列を表します |
Float64Array | 64ビット浮動小数点数の型付き配列を表します |
Function | 関数を表します |
Infinity | 数学的な無限大の値を表します |
Int8Array | 8ビット符号付き整数の型付き配列を表します |
Int16Array | 16ビット符号付き整数の型付き配列を表します |
Int32Array | 32ビット符号付き整数の型付き配列を表します |
Intl | 国際化とローカライズ機能へのアクセスを提供します |
isFinite | 値が有限数であるかを判定します |
isNaN | 値がNaN かどうかを判定します |
JSON | JavaScriptの値と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 | 値が予期された型でない場合のエラーを表します |
Uint8Array | 8ビット符号なし整数の型付き配列を表します |
Uint8ClampedArray | 0-255にクランプされた8ビット符号なし整数の型付き配列を表します |
Uint32Array | 32ビット符号なし整数の型付き配列を表します |
URIError | グローバルURI処理関数が誤った方法で使用された場合のエラーを表します |
URL | オブジェクトURLを作成するための静的メソッドを提供するオブジェクトを表します |
URLPattern | URLパターンを表します |
URLSearchParams | キー/値のペアのコレクションを表します |
WeakMap | キーが弱参照されるキー/値のペアのコレクションを表します |
WeakSet | 各オブジェクトが1回のみ出現可能なオブジェクトのコレクションを表します |
WebAssembly | WebAssemblyへのアクセスを提供します |
Next.js 固有のポリフィル
環境変数
next dev
と next 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モジュールをコンパイルおよびインスタンス化します |
まれに、コードに(またはインポートされた)動的なコード評価文が含まれている可能性があり、それらは 実行時に到達できず、ツリーシェイキングによって削除できない場合があります。 ミドルウェアの設定で特定のファイルのチェックを緩和できます:
unstable_allowDynamic
は、特定のファイルの動的コード評価を無視するグロブ、またはグロブの配列です。グロブはアプリケーションのルートフォルダーを基準とします。
警告:これらの文がEdge上で実行された場合、実行時エラーをスローします。