Edge Runtime
Next.js Edge RuntimeはMiddlewareに使用され、以下のAPIをサポートします。
ネットワークAPI
API | 説明 |
---|---|
Blob | Blobを表します |
fetch | リソースをフェッチします |
FetchEvent | フェッチイベントを表します |
File | ファイルを表します |
FormData | フォームデータを表します |
Headers | HTTPヘッダーを表します |
Request | HTTPリクエストを表します |
Response | HTTPレスポンスを表します |
URLSearchParams | URL検索パラメーターを表します |
WebSocket | WebSocket接続を表します |
エンコーディングAPI
API | 説明 |
---|---|
atob | Base64でエンコードされた文字列をデコードします |
btoa | 文字列をBase64でエンコードします |
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(Uniform Resource Identifier)をデコードします |
decodeURIComponent | 以前にencodeURIComponent または類似のルーチンによって作成されたURI(Uniform Resource Identifier)コンポーネントをデコードします |
DOMException | DOMで発生するエラーを表します |
encodeURI | URI(Uniform Resource Identifier)を、特定の文字の各インスタンスをUTF-8エンコーディングを表す1、2、3、または4つのエスケープシーケンスに置き換えることでエンコードします |
encodeURIComponent | URI(Uniform Resource Identifier)コンポーネントを、特定の文字の各インスタンスを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形式に変換する機能、およびJSON形式からJavaScriptの値に変換する機能を提供します |
Map | 各値が一度しか出現しない値のコレクションを表します |
Math | 数学関数と定数へのアクセスを提供します |
Number | 数値データ型を表します |
Object | すべてのJavaScriptオブジェクトの基底であるオブジェクトを表します |
parseFloat | 文字列引数を解析し、浮動小数点数を返します |
parseInt | 文字列引数を解析し、指定された基数の整数を返します |
Promise | 非同期操作の最終的な完了(または失敗)と、その結果の値を表します |
Proxy | 基本的な操作(例: プロパティの検索、代入、列挙、関数呼び出しなど)のカスタム動作を定義するために使用されるオブジェクトを表します |
queueMicrotask | 実行されるマイクロタスクをキューに入れます |
RangeError | 値が許可された値のセットまたは範囲内にない場合に発生するエラーを表します |
ReferenceError | 存在しない変数を参照したときに発生するエラーを表します |
Reflect | 傍受可能なJavaScript操作のメソッドを提供します |
RegExp | 正規表現を表し、文字の組み合わせにマッチングさせることができます |
Set | 各値が一度しか出現しない値のコレクションを表します |
値のコレクションを表し、各値は一度しか出現できません | setInterval |
関数を繰り返し呼び出し、各呼び出しの間に固定の時間遅延を設定します | setTimeout |
指定されたミリ秒数が経過した後に関数を呼び出すか、式を評価します | 汎用的な固定長生バイナリデータバッファを表します |
SharedArrayBuffer | 文字のシーケンスを表します |
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設定で特定のファイルを許可するようにチェックを緩和できます。
middleware.ts
export const config = {
unstable_allowDynamic: [
// allows a single file
'/lib/utilities.js',
// use a glob to allow anything in the function-bind 3rd party module
'**/node_modules/function-bind/**',
],
}
unstable_allowDynamic
は、特定のファイルに対して動的コード評価を無視するglob、またはglobsの配列です。globsはアプリケーションのルートフォルダからの相対パスです。
これらのステートメントがEdgeで実行された場合、*エラーが発生し、ランタイムエラーになります*のでご注意ください。
この情報はお役に立ちましたか?