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

Next.js生产构建报错:next/server仅可在pages/_middleware.js中导入

解决Next.js构建错误:Error: next/server should not be imported outside of pages/_middleware.js

可能的问题1:API路由环境与导入不匹配

你的API路由代码中导入了NextResponse(来自next/server),该导出仅适用于App Router的API路由(即放在app/api/[路由名]/route.js的文件)。如果你的API路由实际位于pages/api目录下(属于Pages Router),就会触发这个错误。

对应解决方法:

  • 若为Pages Router的API路由(pages/api目录下),修改代码使用NextApiRequest和NextApiResponse:
import { NextApiRequest, NextApiResponse } from "next";
import { getCurrentUser } from "@/actions/getCurrentUser";

export default async function handler(req: NextApiRequest, res: NextApiResponse) {
  if (req.method !== "POST") {
    return res.status(405).json({ message: "Method not allowed" });
  }

  const currentUser = await getCurrentUser();
  if (!currentUser) {
    return res.status(401).json({ message: "Authentication failed!" });
  }

  return res.status(200).json("okay");
}
  • 若为App Router的API路由,确保文件放在app/api/[你的路由路径]/route.js,当前的NextResponse导入是正确的,无需修改。

可能的问题2:getCurrentUser函数存在非法导入

检查@/actions/getCurrentUser文件的代码,如果其中导入了next/server的内容(比如NextResponse),但该函数被Pages Router的API路由、客户端组件等不允许的场景调用,也会触发该错误。

对应解决方法:

  • 确保getCurrentUser仅使用符合当前执行环境的导出:服务器端场景(包括middleware、App Router API、Server Components)可使用next/server,但Pages Router的API或客户端组件中,需替换为对应环境的API(比如Pages Router用next的导出,客户端组件避免服务器端专属导出)。

可能的问题3:Middleware配置或版本不兼容

你的src/middleware.js位置符合App Router要求,但需确认:

  1. Next.js版本为13.0+(支持App Router),旧版本仅支持pages/_middleware.js作为middleware文件位置。
  2. 使用的next-auth版本为v4.20+,该版本开始完善对App Router middleware的支持。

对应解决方法:

  • 升级Next.js到最新稳定版:npm install next@latest
  • 升级next-auth到兼容版本:npm install next-auth@latest

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 10:26:10