【发布时间】:2021-10-10 10:52:09
【问题描述】:
TLDR;
nextjs 的中间件,例如 express,我只定义一次,它会自动应用于我的所有路由
我想要一个像express 中的中间件样式我将在server.js(入口文件)中定义一个中间件,中间件将应用于所有路由,无需任何其他工作。好吧,我需要与 NextJs 类似的东西
这些我已经尝试并使用了一段时间
1:使用高阶组件(HOC):
由于这些缺点,我不喜欢这种方法
-
使用 HOC 将禁用 fast-refresh 功能,拥有More Info Here
-
我必须在每个 api 路由文件中导入我的中间件,这真的很不好玩,而且将你的 api 文件包装在一个函数中并不是一直要记住的事情
2:使用 next-connect
由于这些缺点,我不喜欢使用这个包
- 处理 api 路由的 nextjs 方式看起来更自然,因为我使用 nextjs 我想仍然使用 nextjs 方式来处理我的路由。只是为了中间件而没有完全不同的风格
- 和
HOC一样我不喜欢在每个api文件中导入nc和my-middleware
那么为什么不直接使用像 express 这样的自定义服务器呢?问题是当我使用 nextjs 时,我只想使用 nextjs 也使用自定义服务器会失去很多 nextjs 的酷未来,这也是我使用 nextjs 的部分原因
【问题讨论】:
-
首先,快速刷新不适用于 API 路由。如果不使用自定义服务器,则无需在每个 API 路由上导入中间件。我想如果你愿意的话,你可以有一个包罗万象的 API 路由,而不是几个。
-
@juliomalves 对不起,我没有注意我也在为 nextjs 页面使用 HOC,所以在这种情况下快速刷新将被禁用。
-
没有 HOC 是不可能的,如果您有任何解决方法,请告诉我们
标签: reactjs express next.js middleware