NextJs 中间件:使用默认运行时而不是 Edge 运行时
NextJs middleware: use default runtime instead of Edge runtime
默认情况下,NextJs 中间件是 运行 使用边缘 运行 时间,据我所知,这是因为中间件应该是 运行 在边缘网络上主服务器(运行 在边缘网络上减少了延迟,因此在某些情况下这提供了改进的性能)。
它的缺点是 Edge 运行time 在它可以做什么方面有一些限制 运行(列表 here)。
我的问题是:有什么方法可以使用默认 运行 时间而不是 Edge 运行 时间来制作中间件 运行?
在我的情况下,我们没有在 Edge 上托管任何东西,因此 Edge 运行time 对我们施加了一些限制,但没有提供任何好处。一种可能的解决方法是使用自定义中间件而不是 NextJs 中间件,但除非这是唯一的选择,否则我宁愿使用 NextJs 中间件架构和管道而不是构建我们自己的。
P.s.: 我们正在使用 NextJs 12.1.6
(写这个问题时的 latest
版本)
目前无法做到这一点,但正在努力。参见 RFC: Switchable Next.js Runtime
目前,如果您的中间件需要节点 apis,您可以通过创建 api 路由来处理节点 apis 然后调用它们来解决这个问题从你的中间件。你绝对应该尝试一下,而不是用我假设的自定义服务器制作自定义中间件,因为自定义服务器有限制。
默认情况下,NextJs 中间件是 运行 使用边缘 运行 时间,据我所知,这是因为中间件应该是 运行 在边缘网络上主服务器(运行 在边缘网络上减少了延迟,因此在某些情况下这提供了改进的性能)。
它的缺点是 Edge 运行time 在它可以做什么方面有一些限制 运行(列表 here)。
我的问题是:有什么方法可以使用默认 运行 时间而不是 Edge 运行 时间来制作中间件 运行?
在我的情况下,我们没有在 Edge 上托管任何东西,因此 Edge 运行time 对我们施加了一些限制,但没有提供任何好处。一种可能的解决方法是使用自定义中间件而不是 NextJs 中间件,但除非这是唯一的选择,否则我宁愿使用 NextJs 中间件架构和管道而不是构建我们自己的。
P.s.: 我们正在使用 NextJs 12.1.6
(写这个问题时的 latest
版本)
目前无法做到这一点,但正在努力。参见 RFC: Switchable Next.js Runtime
目前,如果您的中间件需要节点 apis,您可以通过创建 api 路由来处理节点 apis 然后调用它们来解决这个问题从你的中间件。你绝对应该尝试一下,而不是用我假设的自定义服务器制作自定义中间件,因为自定义服务器有限制。