passion-vision 项目问题与解决复盘
1. Cloudflare Worker 静态资源与图片接口
- 问题:前端静态资源、图片 404 或 MIME 错误。
- 解决:所有 dist/assets 下静态资源上传到 R2,worker 静态路由根据扩展名设置 Content-Type。
2. /api/image 接口图片未命中
- 问题:/api/image 返回 placeholder,R2 命名与 query/md5 映射不一致。
- 解决:明确图片应按 md5(query).jpg 缓存到 R2,worker 端严格按此规则查找。
3. Unsplash 拉取失败
- 问题:worker 端未配置 UNSPLASH_ACCESS_KEY,导致 fallback 失败。
- 解决:wrangler.toml 添加 [vars] UNSPLASH_ACCESS_KEY,重新部署。
4. R2 公网直链 403/401
- 问题:R2 S3 API 直链需公开读权限,未设置时返回 Authorization 错误。
- 解决:如只需私有访问,worker 端直接代理图片内容,不暴露直链。
5. worker 图片接口行为与本地 Express 不一致
- 问题:worker /api/image 直接返回图片二进制,Express 返回 JSON。
- 解决:worker 拆分为 /api/image(返回 JSON,url 字段为 /api/images-proxy 代理链接)和 /api/images-proxy(返回图片二进制),与本地风格一致。
6. 500 错误与调试
- 问题:R2 读取、Unsplash 拉取等异常未捕获,导致 500。
- 解决:所有图片相关接口增加 try-catch,500 时返回 JSON,包含 error、query、detail、stack 字段,便于定位。
7. 路由未定义/导出顺序
- 问题:handleImageProxyAPI 未定义导致 500。
- 解决:确保函数声明顺序正确,接口路由引用前已定义。
如需复盘更多细节,可查阅本 md 文档及 worker/src/index.ts 代码注释。