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

Docker与Vite部署问题:构建时vite未找到的解决方案咨询

问题解决:Vite构建时"sh: vite: not found"错误处理

错误原因

你的构建命令vite build需要Vite工具,但Vite被标记为开发依赖(devDependencies),而你执行npm install --omit=dev时跳过了所有开发依赖的安装,导致构建时找不到Vite命令。

你的问题解答

可以只安装Vite(以及构建必需的其他开发依赖),不需要安装所有开发依赖,但要保证构建过程中需要的工具都已安装。不过更推荐用Docker多阶段构建,既能满足构建需求,又能让最终的生产镜像体积最小化。

具体解决方案

方案1:Docker多阶段构建(推荐)

将构建过程和生产运行过程分开,第一阶段完成前端构建,第二阶段只保留运行后端所需的生产依赖和前端构建产物,完全不需要在生产镜像中保留开发依赖。

修改后的Dockerfile示例:

# 第一阶段:构建前端代码
FROM node:lts-alpine as builder

WORKDIR /app

# 复制前端package文件并安装所有依赖(包括dev)
COPY client/package*.json client/
RUN cd client && npm install

# 复制前端源码并构建
COPY client/ client/
RUN cd client && npm run build

# 第二阶段:生产环境镜像
FROM node:lts-alpine

WORKDIR /app

# 复制后端package文件并安装生产依赖
COPY server/package*.json server/
RUN cd server && npm install --omit=dev

# 从builder阶段复制前端构建产物
COPY --from=builder /app/client/dist client/dist

# 复制后端源码
COPY server/ server/

USER node

CMD [ "npm", "start", "--prefix", "server" ]

EXPOSE 8000

方案2:临时安装Vite用于构建

如果不想用多阶段构建,可以在执行前端构建前,临时安装Vite(不保存到package.json),构建完成后也不会带到生产镜像里:

修改原Dockerfile中前端相关的步骤:

COPY client/package*.json client/
RUN npm run install-client --omit=dev

COPY client/ client/
# 临时安装Vite用于构建
RUN cd client && npm install vite --no-save && npm run build

注意:如果你的Vite构建还依赖其他开发依赖(比如插件、babel等),需要把这些也一起临时安装,否则可能会出现其他构建错误。

补充说明

  • 多阶段构建是Docker最佳实践之一,能大幅减少生产镜像的体积,避免把开发依赖打包进去,更安全也更高效。
  • 如果选择临时安装的方式,要确认所有构建必需的开发依赖都已安装,比如@vitejs/plugin-react这类插件,如果它们在devDependencies里,也需要一起安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:05:15