@remix-run/serve
Remix 应用服务器
Remix 旨在让您拥有自己的服务器,但如果您不想设置服务器,则可以使用 Remix 应用服务器。它是使用 Express 构建的生产就绪但基本的 Node.js 服务器。
根据设计,我们不提供自定义 Remix 应用服务器的选项,因为如果您需要自定义底层express
服务器,我们宁愿您完全管理服务器,而不是创建一个抽象来处理您可能需要的所有可能的自定义。如果您发现想要自定义它,则应该使用@remix-run/express
适配器。
您可以在 packages/remix-serve/cli.ts 中看到底层的 express
服务器配置。默认情况下,它使用以下 Express 中间件(请参阅其文档了解默认行为):
HOST
环境变量
您可以通过 process.env.HOST
为您的 Express 应用配置主机名,并且该值将在启动服务器时传递给内部 app.listen
方法。
PORT
环境变量
您可以使用环境变量更改服务器的端口。
开发环境
根据process.env.NODE_ENV
,服务器将以开发或生产模式启动。
server-build-path
需要指向 remix.config.js
中定义的 serverBuildPath
。
因为只有构建工件(build/
、public/build/
)需要部署到生产中,所以remix.config.js
不能保证在生产中可用,因此您需要使用此选项告诉 Remix 您的服务器构建在哪里。
在开发过程中,remix-serve
将通过清除每个请求的require
缓存来确保运行最新代码。这会对您的代码产生一些影响,您可能需要注意:
- 模块范围内的任何值都将被
重置
如果您需要一种在开发中保留缓存的解决方法,您可以在服务器中设置一个singleton。
- 任何模块副作用都将保留!这可能会造成问题,但无论如何都应该避免。
如果您需要以具有这些类型的模块副作用的方式编写代码,则应该设置自己的 @remix-run/express 服务器和开发中的工具(如 pm2-dev 或 nodemon),以便在文件更改时重新启动服务器。
在生产中不会发生这种情况。服务器启动后一切就结束了。