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

Docker构建时提示vite未找到的问题求助

Docker运行Vite React应用提示"vite: not found"的解决方案

问题现象

运行Docker容器时出现以下错误:

[+] Running 1/1
 ⠿ Container client-client-1  Recreated                                                                0.2s
Attaching to client-client-1
client-client-1  |
client-client-1  | > client@0.0.0 dev
client-client-1  | > vite
client-client-1  |
client-client-1  | sh: 1: vite: not found
client-client-1 exited with code 127

相关配置文件

Dockerfile

FROM node

WORKDIR /usr/src/app

COPY ./package.json .

RUN npm i

COPY . .


CMD ["npm", "run", "dev"]

docker-compose.yml

version: '3.9'

services:
  client:
    build: .
    ports:
      - 5173:5173
    volumes:
      - .:/usr/src/app

package.json

{
  "name": "client",
  "private": true,
  "version": "0.0.0",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "tsc && vite build",
    "preview": "vite preview",
    "lint": "eslint .",
    "lint:fix": "eslint --fix ."
  },
  "dependencies": {
    "eslint": "^8.36.0",
    "eslint-config-airbnb": "^19.0.4",
    "react": "^18.2.0",
    "react-dom": "^18.2.0"
  },
  "devDependencies": {
    "@testing-library/jest-dom": "^5.16.5",
    "@testing-library/react": "^14.0.0",
    "@types/react": "^18.0.28",
    "@types/react-dom": "^18.0.11",
    "@typescript-eslint/eslint-plugin": "^5.54.1",
    "@typescript-eslint/parser": "^5.54.1",
    "@vitejs/plugin-react": "^3.1.0",
    "eslint": "^8.35.0",
    "eslint-config-airbnb": "^19.0.4",
    "eslint-config-airbnb-typescript": "^17.0.0",
    "eslint-config-prettier": "^8.7.0",
    "eslint-plugin-import": "^2.27.5",
    "eslint-plugin-jsx-a11y": "^6.7.1",
    "eslint-plugin-prettier": "^4.2.1",
    "eslint-plugin-react": "^7.32.2",
    "eslint-plugin-react-hooks": "^4.6.0",
    "jsdom": "^21.1.0",
    "prettier": "^2.8.4",
    "typescript": "^4.9.3",
    "vite": "^4.2.0"
  }
}

原因

核心问题是本地目录挂载覆盖了容器内的node_modules:docker-compose中- .:/usr/src/app将本地项目目录完整挂载到容器内,若本地未安装依赖(或node_modules被.gitignore排除未同步),容器内通过npm i安装的依赖会被覆盖,导致找不到vite命令。

解决办法

方法1:保留容器内node_modules(推荐)

修改docker-compose.yml,添加排除node_modules的挂载规则,确保容器内安装的依赖不被本地目录覆盖:

version: '3.9'

services:
  client:
    build: .
    ports:
      - 5173:5173
    volumes:
      - .:/usr/src/app
      - /usr/src/app/node_modules  # 保留容器内的node_modules目录

方法2:用npx调用vite

修改package.json的dev脚本,通过npx直接调用本地安装的vite:

"scripts": {
  "dev": "npx vite",
  "build": "tsc && npx vite build",
  "preview": "npx vite preview",
  // 其他脚本不变
}

方法3:全局安装vite(不推荐)

在Dockerfile中添加全局安装vite的命令,此方法会增加镜像体积,仅作备选:

FROM node

WORKDIR /usr/src/app

COPY ./package.json .

RUN npm i && npm install -g vite

COPY . .

CMD ["npm", "run", "dev"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 17:43:07