You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js 13.5.3中间件命名与放置位置的疑问

Next.js 13.5.3 中间件问题解答

问题1:中间件文件名是否需要以“_”开头?

分两种路由架构情况:

  • Pages Router(以pages目录为核心的旧架构):中间件文件名必须以_开头,即_middleware.js(或.ts),这是框架的约定规则,只有这个命名的文件才会被识别为Pages Router的中间件。
  • App Router(以app目录为核心的新架构):中间件文件名不需要加_,直接命名为middleware.js(或.ts)即可。

问题2:应将中间件文件放在哪个目录才能使用NextResponse?

同样分架构说明:

  • Pages Router:必须将_middleware.js放在pages目录下,此时导入next/server的NextResponse是完全合法的,ESLint不会报错。你之前改到pages/_middleware.js时出现构建错误,大概率是代码逻辑问题(比如未正确返回NextResponse实例、请求对象处理不当等),而非路径或命名问题。
  • App Router:直接将middleware.js放在项目根目录(和app、pages目录同级),这里导入next/server的NextResponse符合规则。你之前移到根目录仍报ESLint错误,可能是ESLint插件版本未匹配Next.js 13.5.3,或是项目同时混合了Pages和App Router导致规则冲突,建议检查@next/eslint-plugin-next的版本是否和Next.js版本一致。

内容的提问来源于stack exchange,提问作者pneuma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 00:44:57