エッジランタイム
Next.js エッジランタイムはミドルウェアに使用され、以下の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 | ストリームのための連結可能なエンコーダ |
Stream API
API | 説明 |
---|---|
ReadableStream | 読み取り可能なストリームを表す |
ReadableStreamBYOBReader | ReadableStreamのリーダーを表す |
ReadableStreamDefaultReader | ReadableStreamのリーダーを表す |
TransformStream | 変換ストリームを表す |
WritableStream | 書き込み可能なストリームを表す |
WritableStreamDefaultWriter | WritableStreamのライターを表す |
Crypto 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つ、2つ、3つ、または4つのエスケープシーケンスに置き換えることで、Uniform Resource Identifier (URI)をエンコードします。 |
encodeURIComponent | 特定の文字を、その文字のUTF-8エンコーディングを表す1つ、2つ、3つ、または4つのエスケープシーケンスに置き換えることで、Uniform Resource Identifier (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ランタイムには、いくつかの制限があります。
- ネイティブ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: [
// 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で実行されると、例外が発生し、ランタイムエラーが発生しますので注意してください。
役に立ちましたか?