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

部署Next13应用后所有路径均返回404页面问题求助

Next13 App Router 容器化后全路由404排查方案
  • 端口映射错误
    检查Docker启动命令或docker-compose.yml的端口配置,Next.js默认监听3000端口,需确保容器3000端口与主机端口正确映射,比如执行docker run -p 80:3000 <镜像名>,若映射端口错误或未映射,访问会直接返回404。

  • Dockerfile构建逻辑缺失关键步骤
    确认Dockerfile是否正确复制构建产物到运行环境,标准的多阶段构建流程如下,若遗漏复制.next、public等目录,会导致Next.js无法读取路由资源:

    # 构建阶段
    FROM node:18-alpine AS builder
    WORKDIR /app
    COPY package*.json ./
    RUN npm ci
    COPY . .
    RUN npm run build
    
    # 运行阶段
    FROM node:18-alpine AS runner
    WORKDIR /app
    COPY --from=builder /app/.next ./.next
    COPY --from=builder /app/public ./public
    COPY --from=builder /app/package*.json ./
    RUN npm ci --only=production
    EXPOSE 3000
    ENV NODE_ENV production
    CMD ["npm", "start"]
    
  • 启动环境变量配置错误
    必须确保启动时设置NODE_ENV=production,Next.js在生产模式下才会加载.next目录的构建产物。若用开发模式命令(如npm run dev)启动,会忽略已构建的路由文件,导致全路由404。

  • App Router路由结构不符合规则
    检查app目录下的文件命名是否正确:

    • 根路径/需存在app/page.js(或.tsx)文件,而非传统的index.js
    • 子路由如/about需对应app/about/page.js结构
      若文件名或目录层级不符合要求,Next.js无法识别路由,直接返回404。
  • 容器工作目录与文件权限问题

    1. 进入容器执行pwd确认工作目录是否与Dockerfile中WORKDIR一致,若工作目录错误,Next.js找不到.next和public资源
    2. 检查文件权限,若.next或public目录所有者为root,可能导致Next.js进程无法读取,可在Dockerfile中添加:
      RUN chown -R node:node /app
      USER node
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:07:11