entry.server
このコンテンツはまだ日本語訳がありません。
默认情况下,Remix 将为您生成 HTTP 响应。如果您想自定义此行为,可以运行 npx remix reveal
来生成优先的 app/entry.server.tsx
(或.jsx
)。此模块的 default
导出是一个函数,可让您创建响应,包括 HTTP 状态、标头和 HTML,让您完全控制生成标记并将其发送到客户端的方式。
此模块应使用带有当前请求的 context
和 url
的 <RemixServer>
元素呈现当前页面的标记。一旦 JavaScript 使用浏览器入口模块加载到浏览器中,此标记将(可选)重新水化。
处理数据请求
您可以导出可选的 handleDataRequest
函数,该函数允许您修改数据请求的响应。这些请求不会呈现 HTML,而是在客户端水合发生后将加载程序和操作数据返回到浏览器。
handleError
默认情况下,Remix 会将遇到的服务器端错误记录到控制台。如果您希望更好地控制日志记录,或者还想将这些错误报告给外部服务,则可以导出可选的 handleError
函数,该函数将为您提供控制权(并禁用内置错误日志记录)。
请注意,通常要避免在请求中止时记录日志,因为 Remix 的取消和竞争条件处理可能会导致大量请求中止。
流式渲染错误
当您通过 renderToPipeableStream
或 renderToReadableStream
流式传输 HTML 响应时,您自己的 handleError
实现将仅处理初始 shell 渲染期间遇到的错误。如果您在后续流式渲染期间遇到渲染错误,您将需要手动处理这些错误,因为 Remix 服务器此时已经发送了响应。
- 对于
renderToPipeableStream
,您可以在onError
回调函数中处理这些错误。您需要在onShellReady
中切换布尔值,以便知道错误是 shell 渲染错误(可以忽略)还是异步渲染错误(必须处理)。 - 有关示例,请参阅 Node 的默认
entry.server.tsx
。 - 对于
renderToReadableStream
,您可以在onError
回调函数中处理这些错误 - 有关示例,请参阅 Cloudflare 的默认
entry.server.tsx
抛出的响应
请注意,这不会处理从 loader
/action
函数抛出的 Response
实例。此处理程序的目的是查找代码中导致意外抛出错误的错误。如果您检测到场景并在 loader
/action
中抛出 401/404 / 等 Response
,那么这是由您的代码处理的预期流程。如果您还希望记录或将它们发送到外部服务,则应在抛出响应时完成。