Edge Runtime
Next.js Edge Runtime은 미들웨어에 사용되며 다음 API들을 지원합니다:
Network APIs
API | 설명 |
---|---|
Blob (opens in a new tab) | 블롭을 나타냄 |
fetch (opens in a new tab) | 리소스를 가져옴 |
FetchEvent (opens in a new tab) | fetch 이벤트를 나타냄 |
File (opens in a new tab) | 파일을 나타냄 |
FormData (opens in a new tab) | 폼 데이터를 나타냄 |
Headers (opens in a new tab) | HTTP 헤더를 나타냄 |
Request (opens in a new tab) | HTTP 요청을 나타냄 |
Response (opens in a new tab) | HTTP 응답을 나타냄 |
URLSearchParams (opens in a new tab) | URL 검색 매개변수를 나타냄 |
WebSocket (opens in a new tab) | 웹소켓 연결을 나타냄 |
Encoding APIs
API | 설명 |
---|---|
atob (opens in a new tab) | base-64 인코딩 문자열을 디코딩 |
btoa (opens in a new tab) | 문자열을 base-64로 인코딩 |
TextDecoder (opens in a new tab) | Uint8Array를 문자열로 디코딩 |
TextDecoderStream (opens in a new tab) | 스트림용 체이너블 디코더 |
TextEncoder (opens in a new tab) | 문자열을 Uint8Array로 인코딩 |
TextEncoderStream (opens in a new tab) | 스트림용 체이너블 인코더 |
Stream APIs
API | 설명 |
---|---|
ReadableStream (opens in a new tab) | 읽기 가능한 스트림을 나타냄 |
ReadableStreamBYOBReader (opens in a new tab) | ReadableStream의 리더를 나타냄 |
ReadableStreamDefaultReader (opens in a new tab) | ReadableStream의 리더를 나타냄 |
TransformStream (opens in a new tab) | 변환 스트림을 나타냄 |
WritableStream (opens in a new tab) | 쓰기 가능한 스트림을 나타냄 |
WritableStreamDefaultWriter (opens in a new tab) | WritableStream의 라이터를 나타냄 |
Crypto APIs
API | 설명 |
---|---|
crypto (opens in a new tab) | 플랫폼의 암호화 기능에 접근 제공 |
CryptoKey (opens in a new tab) | 암호화 키를 나타냄 |
SubtleCrypto (opens in a new tab) | 해싱, 서명, 암호화, 복호화와 같은 일반적인 암호화 원시 기능 제공 |
Web Standard APIs
Next.js Specific Polyfills
Environment Variables
process.env
를 사용하여 환경 변수에 접근할 수 있습니다 (next dev
및 next build
모두에서).
Unsupported APIs
Edge Runtime에는 몇 가지 제한 사항이 있습니다:
- 네이티브 Node.js API는 지원되지 않습니다. 예를 들어, 파일 시스템에 읽기 또는 쓰기를 할 수 없습니다.
node_modules
는 ES 모듈을 구현하고 네이티브 Node.js API를 사용하지 않는 한 사용할 수 있습니다.require
를 직접 호출하는 것은 허용되지 않습니다. 대신 ES 모듈을 사용하십시오.
다음 JavaScript 언어 기능은 비활성화되어 있으며 작동하지 않습니다:
API | 설명 |
---|---|
eval (opens in a new tab) | 문자열로 표현된 JavaScript 코드를 평가함 |
new Function(evalString) (opens in a new tab) | 인수로 제공된 코드를 사용하여 새 함수를 생성 |
WebAssembly.compile (opens in a new tab) | 버퍼 소스에서 WebAssembly 모듈을 컴파일 |
WebAssembly.instantiate (opens in a new tab) | 버퍼 소스에서 WebAssembly 모듈을 컴파일하고 인스턴스화 |
드문 경우이지만, 코드가 (또는 가져온 코드가) 실행 시간에 도달할 수 없고 트리쉐이킹으로 제거할 수 없는 동적 코드 평가 문을 포함할 수 있습니다. 미들웨어 구성에서 특정 파일을 허용하도록 검사를 완화할 수 있습니다:
middleware.ts
export const config = {
unstable_allowDynamic: [
// 단일 파일 허용
'/lib/utilities.js',
// function-bind 서드 파티 모듈 내의 모든 것을 허용하는 글롭 사용
'/node_modules/function-bind/**',
],
}
unstable_allowDynamic
는 특정 파일에 대한 동적 코드 평가를 무시하는 글롭 (opens in a new tab) 또는 글롭 배열입니다. 글롭은 애플리케이션 루트 폴더를 기준으로 상대적입니다.
이 문이 Edge에서 실행되면 런타임 오류를 발생시키고 예외가 발생합니다.