⚠️ 确认是否已存在类似问题
🔧 运行方式
使用源代码运行
🐍 如果是使用源代码运行,请选择你的Python环境版本
Other (请在问题中说明)
💻 请选择你的系统环境
Other (请在问题中说明)
⚠️ 确认是否已经重试多次
🕹 复现步骤
😯 问题描述
页面卡 logo 无法进入(Google CDN 阻断)
环境
- 镜像:
ihmily/streamcap:v1.0.3(也试了 latest,同样问题)
- 部署方式:Docker Compose,Web 模式(
PLATFORM=web)
- 服务器:中国境内服务器
- 客户端:安卓,Chrome 浏览器
现象
打开页面后永远卡在 logo 界面,"Flutter app loaded" 之后不再继续,Console 报错:webRenderer is not defined、canvaskit.wasm 加载失败、WebSocket 连接失败。
根因定位
通过 F12 DevTools 排查,发现三个关键请求全部加载失败:
https://www.gstatic.com/flutter-canvaskit/.../canvaskit.wasm
https://www.gstatic.com/flutter-canvaskit/.../canvaskit.js
https://fonts.gstatic.com/s/roboto/v32/.../woff2
这些都是 Google CDN 域名,中国大陆客户端浏览器被 GFW 阻断,无法下载。
已验证的尝试
.env 中加 FLET_NO_CDN=true / FLET_NO_CDN=1 → 不生效,返回的 HTML 中 noCdn 仍为 false
docker-compose.yml 中通过 environment 传 FLET_NO_CDN=true → 不生效
- 客户端开全局代理访问 → 依然卡 logo(部分代理不代理 WebSocket/WASM 请求)
- v1.0.2 和 v1.0.3 均存在此问题(v1.0.2 升级到 v1.0.3 前后都无法正常加载)
临时绕过方案
在服务器前加一层 Nginx 反向代理,用 sub_filter 强行替换 HTML 中的 noCdn: false 为 noCdn: true,并配置 WebSocket 转发:
location / {
proxy_pass http://127.0.0.1:6006;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
sub_filter 'noCdn: false' 'noCdn: true';
sub_filter 'flet.noCdn=false' 'flet.noCdn=true';
sub_filter_once off;
sub_filter_types *;
}
建议
希望对 Docker 镜像做以下优化,让中国大陆用户能直接使用:
- 预置 CanvasKit 本地文件:将
canvaskit.wasm / canvaskit.js 和 Roboto 字体打包进 Docker 镜像,通过 noCdn: true + 本地路径加载
- 暴露配置项:在
.env 或环境变量中支持 FLET_NO_CDN=true,让用户自行关闭 CDN 加载
ft.app 支持 web_renderer 参数(可设为 CANVAS_KIT / HTML),如果能在 .env 中配置 WEB_RENDERER=html 并生效,也可以绕过此问题。或者直接预置本地 CanvasKit 文件是最彻底的方案。
感谢!
📜 错误信息
No response
🔧 运行方式
使用源代码运行
🐍 如果是使用源代码运行,请选择你的Python环境版本
Other (请在问题中说明)
💻 请选择你的系统环境
Other (请在问题中说明)
🕹 复现步骤
😯 问题描述
页面卡 logo 无法进入(Google CDN 阻断)
环境
ihmily/streamcap:v1.0.3(也试了latest,同样问题)PLATFORM=web)现象
打开页面后永远卡在 logo 界面,"Flutter app loaded" 之后不再继续,Console 报错:
webRenderer is not defined、canvaskit.wasm加载失败、WebSocket 连接失败。根因定位
通过 F12 DevTools 排查,发现三个关键请求全部加载失败:
https://www.gstatic.com/flutter-canvaskit/.../canvaskit.wasmhttps://www.gstatic.com/flutter-canvaskit/.../canvaskit.jshttps://fonts.gstatic.com/s/roboto/v32/.../woff2这些都是 Google CDN 域名,中国大陆客户端浏览器被 GFW 阻断,无法下载。
已验证的尝试
.env中加FLET_NO_CDN=true/FLET_NO_CDN=1→ 不生效,返回的 HTML 中noCdn仍为falsedocker-compose.yml中通过environment传FLET_NO_CDN=true→ 不生效临时绕过方案
在服务器前加一层 Nginx 反向代理,用
sub_filter强行替换 HTML 中的noCdn: false为noCdn: true,并配置 WebSocket 转发:建议
希望对 Docker 镜像做以下优化,让中国大陆用户能直接使用:
canvaskit.wasm/canvaskit.js和 Roboto 字体打包进 Docker 镜像,通过noCdn: true+ 本地路径加载.env或环境变量中支持FLET_NO_CDN=true,让用户自行关闭 CDN 加载ft.app支持web_renderer参数(可设为CANVAS_KIT/HTML),如果能在.env中配置WEB_RENDERER=html并生效,也可以绕过此问题。或者直接预置本地 CanvasKit 文件是最彻底的方案。感谢!
📜 错误信息
No response