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 や同様のルーチンによって作成された URI をデコード |
decodeURIComponent | 以前に encodeURIComponent や同様のルーチンによって作成された URI コンポーネントをデコード |
DOMException | DOM で発生するエラーを表現 |
encodeURI | UTF-8 エンコーディングを表現するために特定の文字をエスケープシーケンスに置き換えることによって URI をエンコード |
encodeURIComponent | UTF-8 エンコーディングを表現するために特定の文字をエスケープシーケンスに置き換えることによって URI コンポーネントをエンコード |
Error | ステートメントの実行やプロパティへのアクセス時に発生するエラーを表現 |
EvalError | グローバル関数eval() に関するエラーを表現 |
Float32Array | 32 ビットの浮動小数点数の型付き配列を表現 |
Float64Array | 64 ビットの浮動小数点数の型付き配列を表現 |
Function | 関数を表現 |
Infinity | 数学的な無限大を表現 |
Int8Array | 8 ビットの符号付き整数の型付き配列を表現 |
Int16Array | 16 ビットの符号付き整数の型付き配列を表現 |
Int32Array | 32 ビットの符号付き整数の型付き配列を表現 |
Intl | 国際化およびローカライズ機能へのアクセスを提供 |
isFinite | 値が有限であるかどうかを決定 |
isNaN | 値が NaN であるかどうかを決定 |
JSON | JavaScript の値を 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 | 値が期待される型でないときのエラーを表現 |
Uint8Array | 8 ビットの符号なし整数の型付き配列を表現 |
Uint8ClampedArray | 0-255 に制限された 8 ビットの符号なし整数の型付き配列を表現 |
Uint32Array | 32 ビットの符号なし整数の型付き配列を表現 |
URIError | グローバルな URI 処理関数が誤った使われ方をしたときのエラーを表現 |
URL | オブジェクト URL を作成するための静的メソッドを提供するオブジェクトを表現 |
URLPattern | URL パターンを表現 |
URLSearchParams | キー/値ペアのコレクションを表現 |
WeakMap | キーが弱参照されるキー/値ペアのコレクションを表現 |
WeakSet | 各オブジェクトが一度だけ現れるオブジェクトのコレクションを表現 |
WebAssembly | WebAssembly へのアクセスを提供 |
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 で実行されると、例外が発生し、ランタイムエラーが発生する ので注意が必要です。