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

Docker容器中pnpm build触发Vite栈溢出错误求助

解决pnpm build触发Vite _interpolate函数栈溢出问题(Docker Alpine环境)

核心问题原因

在node:lts-alpine镜像中,pnpm默认的硬链接/符号链接依赖管理机制,会与Vite@4.5.0的_interpolate路径解析函数产生冲突,导致递归调用栈溢出;而全局安装vite时,依赖路径结构不同,避开了该冲突场景。

可行解决方案

1. 强制pnpm使用复制模式安装依赖

修改pnpm配置,让其直接复制依赖文件而非创建硬链接/符号链接,避免路径解析时的递归问题:

  • 在Dockerfile中添加配置命令:
    RUN pnpm config set package-import-method copy
    
  • 或者在执行pnpm install时添加参数:
    pnpm install --package-import-method copy
    

2. 修改Vite配置启用符号链接保留

在项目的vite.config.js/vite.config.ts中添加preserveSymlinks配置,让Vite保留符号链接的原始路径:

import { defineConfig } from 'vite';

export default defineConfig({
  resolve: {
    preserveSymlinks: true,
  },
  // 其他原有配置...
});

3. 指定兼容的pnpm版本

确保pnpm版本与Vite@4.5.0兼容,推荐使用pnpm 8.x系列:

RUN npm install -g pnpm@8.10.0

完整Dockerfile示例

FROM node:lts-alpine

WORKDIR /app

# 安装指定版本的pnpm
RUN npm install -g pnpm@8.10.0

# 配置pnpm使用复制模式
RUN pnpm config set package-import-method copy

# 复制依赖文件并安装
COPY package.json pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile

# 复制项目代码并构建
COPY . .
RUN pnpm build

额外检查项

  • 排查项目中的路径别名配置,确保没有循环引用的别名(这也可能触发栈溢出)
  • 若项目使用monorepo结构,确保pnpm的workspace配置正确,避免跨包路径解析异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 14:04:57