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 | 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 | UTF-8文字のエンコーディングを表す1、2、3、または4つのエスケープシーケンスによって、特定の文字の各インスタンスを置き換えることで、URI (Uniform Resource Identifier) をエンコードします |
encodeURIComponent | UTF-8文字のエンコーディングを表す1、2、3、または4つのエスケープシーケンスによって、特定の文字の各インスタンスを置き換えることで、URI (Uniform Resource Identifier) コンポーネントをエンコードします |
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 | 汎用的な固定長バイナリデータバッファを表します |
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固有のPolyfills
環境変数
process.env
を使用して、`next dev`と`next build`の両方で環境変数にアクセスできます。
サポートされていない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モジュールをコンパイルし、インスタンス化します |
まれに、コードに動的なコード評価ステートメントが含まれる(またはインポートされる)ことがありますが、これらは*ランタイムで到達できない*か、ツリーシェイキングによって削除できません。ミドルウェア設定で特定のファイルを許可するようにチェックを緩和できます。
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、またはglobの配列です。globはアプリケーションのルートフォルダに対する相対パスです。
これらのステートメントがEdgeで実行された場合、*エラーが発生し、ランタイムエラーを引き起こす*ことに注意してください。
お役に立ちましたか?