Docker构建Vue应用时出现文件找不到错误求助
问题排查:Docker构建Vue应用时文件找不到错误
问题现象
本地执行npm run build构建Vue应用完全正常,但Docker构建时出现文件找不到错误,具体错误信息如下:
------ > [6/6] RUN npm run build: #11 0.587 #11 0.587 > resto@0.0.0 build #11 0.587 > vite build #11 0.587 #11 1.706 vite v3.0.9 building for production... #11 1.777 transforming... #11 3.161 ✓ 289 modules transformed. #11 3.161 [vite:load-fallback] Could not load /src/Views/Forget.vue (imported by src/router/index.js): ENOENT: no such file or directory, open '/src/Views/Forget.vue' #11 3.161 error during build: #11 3.161 Error: Could not load /src/Views/Forget.vue (imported by src/router/index.js): ENOENT: no such file or directory, open '/src/Views/Forget.vue' ------
相关配置文件
Dockerfile
from node:16 ENV port=8080 copy package*.json ./ run npm install run npm install -g http-server copy . ./ run npm run build cmd http-server -p $port dist/
路由导入语句
import Forget from '@/Views/Forget.vue'
Vite配置文件
import { fileURLToPath, URL } from "url"; import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import AutoImport from 'unplugin-auto-import/vite'; import Components from 'unplugin-vue-components/vite'; import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'; export default defineConfig({ base: '', plugins: [vue(), AutoImport({ resolvers: [ElementPlusResolver()], }), Components({ resolvers: [ElementPlusResolver()], }), ], resolve: { alias: { "@": fileURLToPath(new URL("./src", import.meta.url)), }, }, });
实际文件路径
Forget.vue实际存储路径为./src/views/Forget.vue
解决方案
问题核心是文件系统大小写敏感差异:
- 本地Windows/macOS默认是大小写不敏感的文件系统,能识别
Views和views为同一目录;但Docker容器内的Linux系统是严格大小写敏感的,两者会被视为不同目录,导致构建时找不到文件。
解决步骤:
- 修改路由导入语句,将
@/Views/Forget.vue改为@/views/Forget.vue(推荐,符合前端小写目录的通用规范) - 或直接将
src/views目录重命名为src/Views(不推荐,易引发其他大小写兼容问题) - 重新执行Docker构建命令
预防措施
建议在本地开发时开启Vite的文件系统严格检查,提前发现这类问题:
在Vite配置中添加server.fs.strict: true:
export default defineConfig({ // ...其他已有配置 server: { fs: { strict: true } } })
内容的提问来源于stack exchange,提问作者Rafael
相关产品推荐
相关产品推荐

