跳至內容
頁面路由器API 參考邊緣執行環境

邊緣執行環境 (Edge Runtime)

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用於串流的可鏈式編碼器

串流 API

API說明
ReadableStream表示可讀取的串流
ReadableStreamBYOBReader表示 ReadableStream 的讀取器
ReadableStreamDefaultReader表示 ReadableStream 的讀取器
TransformStream表示轉換串流
WritableStream表示可寫入的串流
WritableStreamDefaultWriter表示 WritableStream 的寫入器

加密 API

API說明
crypto提供平台加密功能的存取權。
CryptoKey表示加密金鑰。
SubtleCrypto提供常見加密基元的存取權,例如雜湊、簽章、加密或解密。

網頁標準 API

API說明
AbortController允許您在需要時中止一個或多個 DOM 請求。
Array表示值的陣列。
ArrayBuffer表示一個通用的、固定長度的原始二進位資料緩衝區。
Atomics提供原子操作作為靜態方法。
BigInt表示任意精度的整數。
BigInt64Array表示一個 64 位元有號整數的類型化陣列。
BigUint64Array表示一個 64 位元無號整數的類型化陣列。
Boolean表示一個邏輯實體,可以有兩個值:truefalse
clearInterval取消先前由呼叫 setInterval() 建立的定時重複動作。
clearTimeout取消先前由呼叫 setTimeout() 建立的定時重複動作。
console提供存取瀏覽器除錯控制台的功能。
DataView表示 ArrayBuffer 的通用視圖。
Date以平台無關的格式表示單個時間點。
decodeURI解碼先前由 encodeURI 或類似常式建立的統一資源識別符 (URI)。
decodeURIComponent解碼先前由 encodeURIComponent 或類似常式建立的統一資源識別符 (URI) 元件。
DOMException表示在 DOM 中發生的錯誤。
encodeURI將統一資源識別符 (URI) 編碼,方法是將某些字元的所有實例替換成一個、兩個、三個或四個跳脫序列,這些序列代表字元的 UTF-8 編碼。
encodeURIComponent將統一資源識別符 (URI) 組件編碼,方法是將某些字元的所有實例替換成一個、兩個、三個或四個跳脫序列,這些序列代表字元的 UTF-8 編碼。
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 特定的 Polyfills

環境變數

您可以使用 process.env 來存取 環境變數,適用於 next devnext 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 模組

在極少數情況下,您的程式碼可能包含(或導入)一些*在執行期間無法觸及*且無法透過 Tree Shaking 移除的動態程式碼評估語句。您可以透過中介軟體設定放寬檢查以允許特定檔案。

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 上執行,*它們將會拋出錯誤並導致執行期間錯誤*。