这是服务器的主要入口点。它适用于所有服务器环境,允许您在无服务器模式或长期运行的服务器模式下运行。
如果您想更好地理解如何实现自己的 Wrapper,最简单的方法是查看现有的内置 Wrapper (opens in a new tab)。
需要注意以下几点:
- 如果要使用流式传输(针对 Next.js 的
node
运行时),您需要创建一个StreamCreator
并将其传递给handler
。您可以在 node (opens in a new tab) 或 aws-lambda-streaming (opens in a new tab) wrapper 中找到示例。 - 如果不使用流式传输(如默认的
aws-lambda
wrapper),您可能仍需要向handler
提供一个假的StreamCreator
以避免 Node 本身的奇怪问题(参见这里 (opens in a new tab)的示例和更详细的解释)。 - 如果使用 Next.js 的
edge
运行时(无论是外部中间件还是edge
路由或页面),则完全不需要StreamCreator
。 - 如果在无服务器环境中运行且支持
waitUntil
,则应将其传递给 handler,如 cloudflare-edge wrapper (opens in a new tab) 所示。根据运行环境的不同,这可能不是必需的(例如aws-lambda-streaming
或node
wrapper 不需要它)。
内置 Wrapper
aws-lambda
aws-lambda
包装器是 AWS Lambda 的默认包装器。如果在配置中未提供任何包装器,将默认使用此包装器。
功能特性
- 流式传输
- 完整支持
waitUntil
aws-lambda-streaming
aws-lambda-streaming
包装器支持在 AWS Lambda 中使用流式传输功能。使用此包装器需要为 Lambda 启用流式传输。
功能特性
- 流式传输
- 完整支持
waitUntil
cloudflare-edge
cloudflare-edge
包装器适用于 Cloudflare Workers。它应用于外部中间件以及 Next.js 的 edge
运行时。
功能特性
- 流式传输
- 完整支持
waitUntil
cloudflare-node
cloudflare-node
包装器专为 Cloudflare Workers 设计。仅当使用 Next.js 的 node
运行时且配合 @opennextjs/cloudflare
时才应使用此包装器。
功能特性
- 流式传输
- 完整支持
waitUntil
node
node
包装器适用于传统的 Node.js 服务器。这是一个长期运行的服务器。
功能特性
- 流式传输
- 完整支持
waitUntil
express-dev
express-dev
包装器用于传统的 Express 服务器。这是一个长期运行的进程,仅应用于开发目的。
功能特性
- 流式传输
- 完整支持
waitUntil
dummy
dummy
包装器是一个虚拟实现,仅将事件和 StreamCreator
转发给处理程序。
功能特性
- 流式传输
- 完整支持
waitUntil