Edge Runtime
Next.js の Edge Runtime は標準的な Web API をベースとしており、以下の API をサポートしています:
ネットワーク API
API | 説明 |
---|---|
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エンコーディングを表す1~4つのエスケープシーケンスに置き換えてURIをエンコードする |
encodeURIComponent | 特定の文字をUTF-8エンコーディングを表す1~4つのエスケープシーケンスに置き換えてURIコンポーネントをエンコードする |
Error | ステートメントの実行やプロパティへのアクセス時に発生するエラーを表す |
EvalError | グローバル関数eval() に関連するエラーを表す |
Float32Array | 32ビット浮動小数点数の型付き配列を表す |
Float64Array | 64ビット浮動小数点数の型付き配列を表す |
Function | 関数を表す |
Infinity | 数学的な無限大の値を表す |
Int8Array | 8ビット符号付き整数の型付き配列を表す |
Int16Array | 16ビット符号付き整数の型付き配列を表す |
Int32Array | 32ビット符号付き整数の型付き配列を表す |
Intl | 国際化(i18n)とローカライゼーション機能へのアクセスを提供する |
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 固有のポリフィル
環境変数
next dev
と next build
の両方で環境変数にアクセスするために process.env
を使用できます。
サポートされていない 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 または Edge API Route のエクスポート設定で特定のファイルを許可するようにチェックを緩和できます:
export const config = {
runtime: 'edge', // Edge API Routes 専用
unstable_allowDynamic: [
// 単一ファイルを許可
'/lib/utilities.js',
// glob を使用して function-bind サードパーティモジュール内のすべてを許可
'**/node_modules/function-bind/**',
],
}
unstable_allowDynamic
は glob、または glob の配列で、特定のファイルに対する動的コード評価を無視します。glob はアプリケーションのルートフォルダを基準にします。
これらのステートメントが Edge で実行されると、ランタイムエラーが発生することに注意してください。