diff --git a/H5部署说明.md b/H5部署说明.md
new file mode 100644
index 0000000..48de2e4
--- /dev/null
+++ b/H5部署说明.md
@@ -0,0 +1,206 @@
+# H5 版本部署说明
+
+## 问题描述
+编译后的 H5 版本在服务器上显示样式丢失(乱码),但文字内容正常显示。
+
+## 原因分析
+1. **静态资源路径问题**:CSS 和 JS 文件路径不正确
+2. **服务器配置问题**:Nginx 或 Apache 配置不正确
+3. **MIME 类型问题**:CSS 文件被当作文本文件加载
+
+## 解决方案
+
+### 方案1:检查文件结构(推荐)
+
+编译后的文件结构应该是:
+```
+dist/build/h5/
+├── index.html
+└── static/
+ ├── index.css
+ └── js/
+ ├── chunk-vendors.xxx.js
+ └── index.xxx.js
+```
+
+**部署步骤:**
+1. 将整个 `dist/build/h5` 目录上传到服务器
+2. 确保目录结构完整,不要只上传 `index.html`
+3. 访问 `http://your-domain/index.html`
+
+### 方案2:Nginx 配置
+
+如果使用 Nginx,确保配置正确:
+
+```nginx
+server {
+ listen 80;
+ server_name your-domain.com;
+
+ # 根目录指向 h5 目录
+ root /path/to/dist/build/h5;
+ index index.html;
+
+ # 确保静态资源正确加载
+ location /static/ {
+ expires 30d;
+ add_header Cache-Control "public, immutable";
+ }
+
+ # SPA 路由支持
+ location / {
+ try_files $uri $uri/ /index.html;
+ }
+
+ # 确保 CSS 文件 MIME 类型正确
+ location ~* \.css$ {
+ add_header Content-Type text/css;
+ }
+
+ # 确保 JS 文件 MIME 类型正确
+ location ~* \.js$ {
+ add_header Content-Type application/javascript;
+ }
+}
+```
+
+### 方案3:Apache 配置
+
+如果使用 Apache,在 `h5` 目录下创建 `.htaccess` 文件:
+
+```apache
+
+ RewriteEngine On
+ RewriteBase /
+ RewriteRule ^index\.html$ - [L]
+ RewriteCond %{REQUEST_FILENAME} !-f
+ RewriteCond %{REQUEST_FILENAME} !-d
+ RewriteRule . /index.html [L]
+
+
+# 设置正确的 MIME 类型
+
+ AddType text/css .css
+ AddType application/javascript .js
+
+
+# 启用 Gzip 压缩
+
+ AddOutputFilterByType DEFLATE text/html text/css application/javascript
+
+```
+
+### 方案4:修改 publicPath(如果部署在子目录)
+
+如果部署在子目录(如 `http://your-domain.com/martial/`),需要修改 `vue.config.js`:
+
+```javascript
+module.exports = {
+ // 修改为子目录路径
+ publicPath: process.env.NODE_ENV === 'production' ? '/martial/' : '/',
+
+ // 其他配置...
+}
+```
+
+然后重新编译:
+```bash
+npm run build:h5
+```
+
+### 方案5:检查浏览器控制台
+
+打开浏览器开发者工具(F12),查看:
+
+1. **Network 标签页**
+ - 检查 CSS 文件是否加载成功(状态码应该是 200)
+ - 检查文件路径是否正确
+ - 检查 Content-Type 是否为 `text/css`
+
+2. **Console 标签页**
+ - 查看是否有 404 错误
+ - 查看是否有 CORS 错误
+
+3. **常见错误信息:**
+ ```
+ Failed to load resource: net::ERR_FILE_NOT_FOUND
+ → 文件路径不正确,检查 publicPath 配置
+
+ Refused to apply style from '...' because its MIME type ('text/html') is not a supported stylesheet MIME type
+ → CSS 文件被当作 HTML 加载,检查服务器配置
+ ```
+
+## 快速诊断步骤
+
+1. **本地测试**
+ ```bash
+ # 在 dist/build/h5 目录下启动本地服务器
+ cd dist/build/h5
+ python -m http.server 8000
+ # 或使用 Node.js
+ npx http-server -p 8000
+ ```
+ 访问 `http://localhost:8000`,如果本地正常,说明是服务器配置问题。
+
+2. **检查文件是否上传完整**
+ ```bash
+ # 在服务器上检查文件
+ ls -la /path/to/h5/static/
+ # 应该看到 index.css 和 js 目录
+ ```
+
+3. **检查文件权限**
+ ```bash
+ # 确保文件可读
+ chmod -R 755 /path/to/h5/
+ ```
+
+4. **检查 CSS 文件内容**
+ ```bash
+ # 查看 CSS 文件前几行
+ head -n 20 /path/to/h5/static/index.css
+ # 应该看到 CSS 代码,而不是 HTML 或错误信息
+ ```
+
+## 重新编译
+
+如果修改了配置,需要重新编译:
+
+```bash
+# 清理旧的编译文件
+rm -rf dist/build/h5
+
+# 重新编译
+npm run build:h5
+
+# 检查编译结果
+ls -la dist/build/h5/static/
+```
+
+## 常见问题
+
+### Q1: 样式完全丢失,只显示纯文本
+**A:** CSS 文件没有加载,检查:
+- 文件路径是否正确
+- 服务器配置是否正确
+- MIME 类型是否正确
+
+### Q2: 部分样式丢失
+**A:** CSS 文件加载了但不完整,检查:
+- CSS 文件是否完整上传
+- 是否有 CSS 压缩错误
+- 浏览器兼容性问题
+
+### Q3: 本地正常,服务器异常
+**A:** 服务器配置问题,检查:
+- publicPath 配置
+- Nginx/Apache 配置
+- 文件权限
+
+## 联系支持
+
+如果以上方案都无法解决问题,请提供:
+1. 浏览器控制台截图(Network 和 Console)
+2. 服务器配置文件
+3. 部署的完整路径
+4. 访问的 URL
diff --git a/test-h5.html b/test-h5.html
new file mode 100644
index 0000000..67065a9
--- /dev/null
+++ b/test-h5.html
@@ -0,0 +1,223 @@
+
+
+
+
+
+ H5 部署测试
+
+
+
+ 武术评分系统 H5 部署测试
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vue.config.js b/vue.config.js
index 4a56c53..19823ff 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -5,12 +5,26 @@ module.exports = {
// 静态资源目录
assetsDir: 'static',
+ // 公共路径 - 重要!确保静态资源能正确加载
+ publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
+
// 生产环境配置
productionSourceMap: false,
// CSS 提取配置
css: {
- extract: true
+ extract: true,
+ sourceMap: false
+ },
+
+ // 开发服务器配置
+ devServer: {
+ port: 8080,
+ open: true,
+ overlay: {
+ warnings: false,
+ errors: true
+ }
},
chainWebpack: config => {
@@ -18,5 +32,13 @@ module.exports = {
if (process.env.NODE_ENV === 'production') {
config.performance.hints(false)
}
+
+ // 确保 CSS 文件正确处理
+ config.module
+ .rule('vue')
+ .use('vue-loader')
+ .tap(options => {
+ return options
+ })
}
}