From fe6d71dfca4a38adf4c9793d7429deda15d9a5f7 Mon Sep 17 00:00:00 2001 From: sion <450702724@qq.com> Date: Wed, 25 Mar 2026 09:32:44 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0=20Flutter=20Web=20?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E6=8C=87=E5=8D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 解决 WebAssembly 加载错误 - 提供完整的部署步骤 - 包含常见问题解决方案 --- DEPLOY_GUIDE.md | 160 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 DEPLOY_GUIDE.md diff --git a/DEPLOY_GUIDE.md b/DEPLOY_GUIDE.md new file mode 100644 index 0000000..05704f5 --- /dev/null +++ b/DEPLOY_GUIDE.md @@ -0,0 +1,160 @@ +# Flutter Web 部署指南 + +## 问题:WebAssembly 加载错误 + +错误信息: +``` +TypeError: Failed to execute 'compile' on 'WebAssembly': +An argument must be provided, which must be a Response or Promise object +``` + +## 原因分析 + +1. **文件不完整** - canvaskit.wasm 或其他 WASM 文件未正确部署 +2. **MIME 类型错误** - 服务器未正确返回 `.wasm` 文件的 MIME 类型 +3. **缓存问题** - 浏览器缓存了旧版本的文件 + +## 部署步骤 + +### 方式1: 使用部署脚本(推荐) + +```bash +# 1. SSH 登录服务器 +ssh root@8.155.172.147 + +# 2. 进入项目目录 +cd /www/wwwroot/monisuo + +# 3. 拉取最新代码 +git pull + +# 4. 执行部署脚本 +./deploy_flutter_web.sh +``` + +### 方式2: 手动部署 + +```bash +# 1. 进入项目目录 +cd /www/wwwroot/monisuo + +# 2. 拉取最新代码 +git pull + +# 3. 清理旧文件 +rm -rf /www/wwwroot/monisuo-h5/* + +# 4. 复制新构建文件 +cp -r flutter_monisuo/build/web/* /www/wwwroot/monisuo-h5/ + +# 5. 设置权限 +chown -R www:www /www/wwwroot/monisuo-h5 +chmod -R 755 /www/wwwroot/monisuo-h5 + +# 6. 检查文件 +ls -lh /www/wwwroot/monisuo-h5/main.dart.js +ls -lh /www/wwwroot/monisuo-h5/canvaskit/canvaskit.wasm +``` + +## 配置 Nginx WASM MIME 类型 + +检查并添加 WASM MIME 类型: + +```bash +# 编辑 Nginx MIME 类型配置 +vim /www/server/nginx/conf/mime.types + +# 确保包含以下内容: +application/wasm wasm; + +# 重启 Nginx +nginx -t +nginx -s reload +``` + +## 验证部署 + +### 1. 检查文件完整性 + +```bash +# 检查关键文件 +ls -lh /www/wwwroot/monisuo-h5/main.dart.js +ls -lh /www/wwwroot/monisuo-h5/canvaskit/canvaskit.wasm +ls -lh /www/wwwroot/monisuo-h5/flutter.js +ls -lh /www/wwwroot/monisuo-h5/index.html + +# 检查 WASM 文件数量 +find /www/wwwroot/monisuo-h5 -name "*.wasm" | wc -l +# 应该输出: 4 或更多 +``` + +### 2. 检查 MIME 类型 + +```bash +# 测试 WASM 文件的 MIME 类型 +curl -I http://8.155.172.147:8061/canvaskit/canvaskit.wasm + +# 应该看到: +# Content-Type: application/wasm +``` + +### 3. 清除浏览器缓存 + +- Chrome: `Ctrl + Shift + Delete` (Windows) 或 `Cmd + Shift + Delete` (Mac) +- 选择 "缓存的图片和文件" +- 点击 "清除数据" + +## 常见问题 + +### 问题1: 仍然加载失败 + +**解决方案:** +```bash +# 强制刷新 Nginx 缓存 +nginx -s reload + +# 检查 Nginx 错误日志 +tail -f /www/server/nginx/logs/error.log +``` + +### 问题2: MIME 类型不正确 + +**解决方案:** +```nginx +# 在 Nginx 站点配置中添加 +location ~* \.wasm$ { + types { + application/wasm wasm; + } + add_header Content-Type application/wasm; +} +``` + +### 问题3: 文件权限问题 + +**解决方案:** +```bash +# 修复权限 +chown -R www:www /www/wwwroot/monisuo-h5 +chmod -R 755 /www/wwwroot/monisuo-h5 +``` + +## 部署检查清单 + +- [ ] 代码已拉取到最新版本 +- [ ] main.dart.js 文件存在且完整(约 3.2MB) +- [ ] canvaskit/canvaskit.wasm 文件存在(约 6.8MB) +- [ ] 所有 WASM 文件都已复制(4个或更多) +- [ ] 文件权限正确(755) +- [ ] 文件所有者正确(www:www) +- [ ] Nginx 已配置 WASM MIME 类型 +- [ ] Nginx 已重启 +- [ ] 浏览器缓存已清除 +- [ ] 页面可以正常访问 + +## 联系支持 + +如果问题仍然存在,请检查: +1. Nginx 错误日志:`/www/server/nginx/logs/error.log` +2. 浏览器控制台的详细错误信息 +3. 网络请求是否正常(Chrome DevTools → Network 标签)