Edge Runtime
Next.js Edge Runtime は標準的な Web API に基づいており、次の API をサポートしています:
Network APIs
API | Description |
---|---|
Blob | blob を表す |
fetch | リソースを取得します |
FetchEvent | fetch イベントを表します |
File | ファイルを表します |
FormData | フォームデータを表す |
Headers | HTTP headers を表します |
Request | HTTP request を表す |
Response | HTTP response を表します |
URLSearchParams | URL の検索パラメータを表します |
WebSocket | ウェブソケット接続を表現します |
Encoding APIs
API | Description |
---|---|
atob | base-64 エンコードされた string をデコードします |
btoa | string をベース 64 でエンコードします |
TextDecoder | Uint8Array を string にデコードします |
TextDecoderStream | ストリーム用のチェーン可能なデコーダー |
TextEncoder | string を Uint8Array にエンコードします |
TextEncoderStream | ストリーム用のチェーン可能なエンコーダー |
Stream APIs
API | Description |
---|---|
ReadableStream | 読み取り可能なストリームを表します |
ReadableStreamBYOBReader | ReadableStream のリーダーを表します |
ReadableStreamDefaultReader | ReadableStream のリーダーを表す |
TransformStream | transform ストリームを表します |
WritableStream | 書き込み可能なストリームを表す |
WritableStreamDefaultWriter | これは WritableStream のライターを表します |
Crypto APIs
API | Description |
---|---|
crypto | プラットフォームの暗号機能へのアクセスを提供します |
CryptoKey | 暗号化キーを表します |
SubtleCrypto | ハッシング、署名、暗号化または復号化などの一般的な暗号プリミティブへのアクセスを提供します |
Web Standard APIs
API | Description |
---|---|
AbortController | 望むときに 1 つまたは複数の DOM リクエストを中止できます |
Array | 値の配列を表します |
ArrayBuffer | 一般的で固定長の生の binary データバッファを表現します |
Atomics | 静的メソッドとしてアトミック操作を提供します |
BigInt | 任意の精度で表現される number 全体を表します |
BigInt64Array | 64 ビット符号付き整数のタイプ配列を表現します |
BigUint64Array | 64 ビット符号なし整数の型付き配列を表現します |
Boolean | 論理エンティティを表し、true とfalse の二つの値を持つことができます |
clearInterval | setInterval() によって以前に設定された定時的かつ繰り返しのアクションをキャンセルします |
clearTimeout | setTimeout() によって以前に設定された、時間制御の繰り返しアクションをキャンセルします |
console | ブラウザの debugging コンソールへのアクセスを提供します |
DataView | ArrayBuffer の汎用ビューを表します |
Date | プラットフォームに依存しない形式での単一の瞬間を表します |
decodeURI | encodeURI または類似のルーチンによって以前に作成された Uniform Resource Identifier(URI)をデコードします |
decodeURIComponent | encodeURIComponent または同様のルーチンで以前に作成された Uniform Resource Identifier (URI)の component をデコードします |
DOMException | DOM で発生する error を表します |
encodeURI | 一定の文字の各インスタンスを、その文字の UTF-8 エンコーディングを表す一つ、二つ、三つ、または四つのエスケープシーケンスに置き換えることで、統一リソース識別子(URI)をエンコードします |
encodeURIComponent | 一定の文字の各インスタンスを、その文字の UTF-8 エンコーディングを表す 1 つ、2 つ、3 つ、または 4 つのエスケープシーケンスに置き換えることで、Uniform Resource Identifier (URI) component をエン Code します |
Error | ステートメントの実行やプロパティのアクセス時に error が発生することを表します。 |
EvalError | グローバル関数 eval() に関連する error を表します |
Float32Array | 32 ビット浮動小数点数のタイプ配列を表現します |
Float64Array | 64 ビット浮動小数点数の型付き配列を表します |
Function | 関数を表現します |
Infinity | 数学的な無限大の'' value ''を表現します |
Int8Array | 8 ビット符号付き整数の型付き配列を表します |
Int16Array | 16 ビット符号付き整数の型付き配列を表す |
Int32Array | 32 ビット符号付き整数の型付き配列を表す |
Intl | 国際化とローカライゼーション機能へのアクセスを提供します |
isFinite | value が有限の number であるかどうかを判断します |
isNaN | value がNaN かどうかを判断します |
JSON | JavaScript の値を JSON 形式に変換したり,その逆を行ったりする機能を提供します |
Map | 各々の value が一度だけ発生可能な値の集合を表します |
Math | 数学的な関数や定数にアクセスを提供します |
Number | 数値の value を表す |
Object | それはすべての' JavaScript 'オブジェクトの基礎となる' object 'を表します |
parseFloat | string 引数を解析し、浮動小数点の number を返します |
parseInt | 指定された基数の整数を返す、 string 引数を解析します |
Promise | 非同期操作の最終的な完了(または失敗)と、その結果の value を表します |
Proxy | 基本的な操作(たとえば、プロパティの検索、割り当て、列挙、関数呼び出しなど)のカスタム動作を定義するために使用される object を表します |
queueMicrotask | マイクロタスクを実行するためのキューを作成します |
RangeError | value が許可されたセットまたは範囲内にないときの error を表します |
ReferenceError | 存在しない variable を参照したときの error を表します |
Reflect | JavaScript 操作を妨げるメソッドを提供します |
RegExp | 文字の組み合わせを一致させることを可能にする正規表現を表します |
Set | 各々の value が一度しか発生しない値のコレクションを表します |
setInterval | 特定の関数を一定の時間間隔で繰り返し呼び出します |
setTimeout | 指定した number ミリ秒後に関数を呼び出すか、式を評価します |
SharedArrayBuffer | 一般的で固定長の生の binary データバッファを表現します |
String | 文字の並びを表します |
structuredClone | value のディープコピーを作成します |
Symbol | object のプロパティのキーとして使用されるユニークで不変なデータの type を表します |
SyntaxError | 文法的に無効な code を解釈しようとしたときの error を表します |
TypeError | value が予想された type ではないときの error を表します |
Uint8Array | 8 ビット符号なし整数の型付き配列を表します |
Uint8ClampedArray | 0-255 にクランプされた 8 ビット符号なし整数の型付き配列を表します |
Uint32Array | 32 ビット符号なし整数の型付き配列を表します |
URIError | グローバル URI 処理関数が誤った方法で使用されたときの error を表します |
URL | object の URL を作成するために使用される静的メソッドを提供する object を表します |
URLPattern | URL パターンを表現します |
URLSearchParams | キー/値のペアの集合を表現します |
WeakMap | キーが弱参照されるキー/値のペアのコレクションを表します |
WeakSet | 各々の object が一度だけ出現する可能性のあるオブジェクトのコレクションを表す |
WebAssembly | WebAssembly へのアクセスを提供します |
Next.js Specific Polyfills
Environment Variables
process.env
を使用して、next dev
とnext build
の両方に対するEnvironment Variablesにアクセスできます。
Unsupported APIs
Edge Runtime には、以下を含むいくつかの制限があります:
- ネイティブの Node.js API はサポートされていません。たとえば、ファイルシステムに読み書きすることはできません。
node_modules
は、ES Modules を実装し、ネイティブの Node.js API を使用しない限り、使用できます。require
を直接呼び出すことは許されていません。代わりに ES Modules を使用してください。
次の JavaScript 言語の機能は無効化されており、動作しません:
API | Description |
---|---|
eval | string として表現される JavaScript code を評価します |
new Function(evalString) | 引数として提供された code を使用して新しい関数を作成します |
WebAssembly.compile | バッファの source から WebAssembly モジュールをコンパイルします |
WebAssembly.instantiate | バッファの source から WebAssembly モジュールをコンパイルし、インスタンス化します。 |
まれなケースでは、あなたの code が(または import が)いくつかの dynamic code 評価ステートメントを含んでいる可能性があり、それらは runtime で到達できない_ また、treeshaking によって削除することもできません。あなたの Middleware または Edge API Route のエクスポートされた設定で特定のファイルを許可するチェックを緩和することができます。
export const config = {
runtime: "edge", // for Edge API Routes only
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 の配列で、特定のファイルの dynamic code 評価を無視します。これらの glob は、アプリケーションの root フォルダーに相対的です。
これらのステートメントが Edge 上で実行されると、それらは runtime error を引き起こすことに注意してください。