# JS文件路径问题修复说明
## 🚨 问题描述
在部署到开发服务器 `dev-casedata.igandan.com` 时,JS文件路径不正确,导致404错误:
```
/admin/js/vue-types-DoCPvpw_.js HTTP/1.1" 405 552
```
**目标路径**: `/admin/web/assets/js/[filename]-[hash].js`
## 🔍 问题分析
### 1. 路径配置不一致
- **vite.config.js**: `base: '/'` (开发环境)
- **package.json构建命令**: `--base=/admin/web/` (生产环境)
- **实际部署路径**: `/admin/web/`
### 2. 构建输出路径问题
- JS文件被放在 `js/` 目录下
- 但base路径配置为 `/admin/`
- 导致最终路径变成 `/admin/js/` 而不是 `/admin/assets/js/`
## ✅ 解决方案
### 1. 统一base路径配置
#### 修改 `vite.config.js`
```javascript
export default {
base: process.env.NODE_ENV === 'production' ? '/admin/web/' : '/',
// ... 其他配置
}
```
#### 修改 `package.json` 构建命令
```json
{
"scripts": {
"build:dev-server": "vite build --config vite.config.dev-server.js --mode dev-server",
"build:test": "vite build --base=/admin/ --mode test",
"build:pre": "vite build --base=/admin/ --mode pre",
"build:prod": "vite build --base=/admin/ --mode production"
}
}
```
### 2. 创建专门的开发服务器配置
#### 新增 `vite.config.dev-server.js`
```javascript
export default {
base: '/admin/web/',
// ... 其他配置
build: {
rollupOptions: {
output: {
chunkFileNames: 'assets/js/[name]-[hash].js',
entryFileNames: 'assets/js/[name]-[hash].js',
assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',
}
}
}
}
```
### 3. 修复构建输出路径
#### 修改 `vite.config.js` 中的构建配置
```javascript
build: {
rollupOptions: {
output: {
chunkFileNames: 'assets/js/[name]-[hash].js',
entryFileNames: 'assets/js/[name]-[hash].js',
assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',
}
}
}
```
## 🚀 使用方法
### 1. 构建开发服务器版本
```bash
# 使用专门的配置文件构建
npm run build:dev-server
# 或者使用构建脚本
./build-dev-server.sh
```
### 2. 验证构建结果
构建完成后,检查以下文件路径是否正确:
```
dist/
├── index.html
├── assets/
│ ├── js/
│ │ ├── index-[hash].js
│ │ └── vendor-[hash].js
│ ├── css/
│ │ └── index-[hash].css
│ └── [其他资源文件]
```
### 3. 检查index.html中的路径
确保 `dist/index.html` 中的资源路径以 `/admin/web/assets/` 开头:
```html
```
## 🔧 部署配置
### Nginx配置示例
```nginx
server {
listen 80;
server_name dev-casedata.igandan.com;
location /admin/web/ {
alias /path/to/your/dist/;
try_files $uri $uri/ /admin/web/index.html;
# 处理静态资源
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}
}
```
### Docker部署
确保构建后的文件正确复制到容器中:
```dockerfile
# 复制构建后的前端资源
COPY dist/ /usr/share/nginx/html/
```
## 📋 检查清单
- [ ] 修改 `vite.config.js` 中的base路径
- [ ] 创建 `vite.config.dev-server.js` 专用配置
- [ ] 更新 `package.json` 中的构建命令
- [ ] 修复构建输出路径配置
- [ ] 测试构建结果
- [ ] 验证部署后的资源访问
## 🎯 预期结果
修复后,JS文件应该能够正确访问:
- ✅ 正确路径: `/admin/web/assets/js/[filename]-[hash].js`
- ❌ 错误路径: `/admin/js/[filename]-[hash].js`
## 🆘 故障排除
### 如果问题仍然存在:
1. **清理构建缓存**
```bash
rm -rf dist node_modules/.vite
npm run build:dev-server
```
2. **检查环境变量**
```bash
cat .env.dev-server
```
3. **验证构建配置**
```bash
npm run build:dev-server -- --debug
```
4. **检查网络请求**
使用浏览器开发者工具查看Network标签页中的资源请求路径
## 📞 技术支持
如果按照以上步骤仍然无法解决问题,请检查:
1. 构建日志输出
2. 浏览器控制台错误信息
3. 服务器访问日志
4. 网络请求状态码