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

Yarn Berry+Next.js转Standalone构建后Docker运行模块缺失报错求助

解决Next.js Yarn Berry Standalone构建Docker运行时模块缺失问题

问题场景

使用Yarn Berry管理依赖的Next.js项目,Docker Standalone镜像构建成功,但运行时抛出Cannot find module 'next/dist/server/next-server'错误。

报错原因

Yarn Berry采用PnP(Plug'n'Play)机制管理依赖,依赖文件存储在.yarn/cache目录,且需要通过PnP loader解析模块路径。原Dockerfile的runner阶段未复制Yarn Berry核心配置文件与依赖缓存,直接用node server.js启动时无法加载PnP loader,导致Next.js核心模块无法被识别。

解决方案

修改Dockerfile的runner阶段,复制Yarn Berry必要文件,并通过Yarn启动服务(自动加载PnP loader):

修改后的完整Dockerfile

FROM node:16-alpine as builder

WORKDIR /app

COPY package.json ./
COPY yarn.lock ./
COPY .pnp.cjs ./
COPY .pnp.loader.mjs ./
COPY .yarnrc.yml ./
COPY .yarn .yarn
RUN yarn install --immutable

COPY . .

ARG GITHUB_SHA=0
RUN yarn build

FROM node:16-alpine AS runner

WORKDIR /app

RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs
USER nextjs

# 复制Yarn Berry依赖管理核心文件
COPY --from=builder --chown=nextjs:nodejs /app/.pnp.cjs ./
COPY --from=builder --chown=nextjs:nodejs /app/.pnp.loader.mjs ./
COPY --from=builder --chown=nextjs:nodejs /app/.yarnrc.yml ./
COPY --from=builder --chown=nextjs:nodejs /app/.yarn .yarn
COPY --from=builder --chown=nextjs:nodejs /app/package.json ./

# 复制Next.js静态资源与Standalone构建产物
COPY --from=builder /app/public ./public
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static

ENV NODE_ENV='production'
# 通过Yarn启动服务,自动加载PnP loader
CMD ["yarn", "run", "start"]

额外配置检查

  1. 确保package.json中存在start脚本:
"scripts": {
  "start": "node server.js",
  "build": "next build"
}
  1. 确保next.config.js已启用Standalone输出:
/** @type {import('next').NextConfig} */
const nextConfig = {
  output: 'standalone',
}

module.exports = nextConfig

替代启动方式(可选)

若不想通过Yarn启动,可直接用node命令并指定加载PnP loader:

CMD ["node", "--require", "./.pnp.cjs", "server.js"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:50:24