You need to enable JavaScript to run this app. Next.js 内置 i18n 路由在 Docker 容器中运行时切换语言返回404
优惠活动
大模型
产品
解决方案
定价
更多

Next.js 内置 i18n 路由在 Docker 容器中运行时切换语言返回404

问题根因与修复方案

最高概率的配置遗漏:next.config.js 未打包进镜像

你当前的Dockerfile仅复制了.next、public、node_modules、package.json,没有把存储i18n路由配置的next.config.js文件放进镜像。
next start启动时会从当前运行目录读取next.config.js加载所有自定义路由规则,包括i18n配置里的支持语言列表、默认语言、路径前缀映射逻辑。缺失这个文件时,Next.js服务完全无法识别带语言前缀的路由(比如/zh-CN/xxx、/en-US/xxx),自然会返回404。

修正后的Dockerfile

FROM mhart/alpine-node
WORKDIR /app
# 新增这一行,将 next.config.js 复制到镜像内
COPY ./next.config.js /app/next.config.js
COPY ./.next /app/.next
COPY ./public /app/public
COPY ./node_modules /app/node_modules
COPY ./package.json /app/package.json
CMD ["npm", "run", "start"]

其他需要排查的场景

如果补充文件后问题仍存在,按优先级检查以下项:

  • 集群前置反向代理(Nginx、Traefik等)的规则:确认没有对带locale前缀的路径做不必要的重写、裁剪,请求会被完整透传给Next.js服务
  • 确认构建.next产物时的Node版本和Docker镜像内的Node版本一致,避免next start加载产物时出现兼容问题
  • 确认next.config.js中没有配置仅适配本地环境的basePath、assetPrefix等字段,这类字段和Swarm部署的域名路径不匹配时,也会导致路由失效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 06:24:04