这个「网页出错」一般是函数实例启动失败 / 代码报错导致的
一、先查「实时日志」,定位具体错误(最关键!)
- 回到函数计算
audio-web详情页 → 「代码」标签页 - 点击左上角「实时日志」按钮(在「测试函数」旁边)
- 重新访问一次
https://miaomiaomiao-mpwulqeoed.cn-chengdu.fcapp.run/we.html - 日志里会显示具体的错误原因(比如
InvalidAccessKeyId/NoSuchKey/ModuleNotFound),这是精准排错的核心。
二、按最高概率,直接修复 3 个必错点
✅ 1. 检查启动命令(90% 的启动失败都是这个)
- 进入「配置」→「运行时配置」
- 确认启动命令为:
python3 app.py(必须和代码文件名app.py完全一致) - 确认监听端口为:
9000(函数计算固定端口,不能改) - 点击「保存」,再点「部署代码」
✅ 2. 检查依赖文件requirements.txt(必装依赖缺失)
- 确认代码目录下有
requirements.txt,内容严格为:flask oss2- 不能有多余空格、不能写错拼写(比如
flask写成flaskk) - 必须和
app.py在同一目录下
- 不能有多余空格、不能写错拼写(比如
- 重新点击「部署代码」,让函数重新安装依赖
✅ 3. 检查 AK/SK+OSS 配置(权限 / 地域不匹配)
- 打开
app.py,确认这 4 行完全正确:OSS_ENDPOINT = "oss-cn-chengdu.aliyuncs.com" # 成都地域,绝对不能错 OSS_BUCKET = "ourselves" # Bucket名,一字不差 OSS_ACCESS_KEY_ID = "真实AK" # 替换为RAM子账号的AccessKey ID OSS_ACCESS_KEY_SECRET = "真实SK" # 替换为RAM子账号的AccessKey Secret - 确认 RAM 子账号已授权
AliyunOSSReadOnlyAccess权限(在 RAM 控制台→用户→权限管理里检查) - 确认成都 OSS 里的
we.html文件名完全正确(不能是we(3).html/we.html.txt)
三、终极兜底:用「静态直出方案」彻底绕开所有问题
如果上面改完还是报错,直接用把 HTML 写死在函数里的方案,彻底告别 OSS 读取、依赖、权限问题,100% 成功:
1. 替换app.py为下面的极简代码(直接复制)
from flask import Flask, Response app = Flask(__name__) # 👇 把 we.html 完整代码(加密版)直接粘贴在这里 👇 HTML_CONTENT = """ <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>验证页面</title> <style>/* 的样式 */</style> </head> <body> <!-- 页面内容、加密JS逻辑 --> <h1>验证页面</h1> <!-- 输入框、按钮、音频播放器等 --> </body> <script> // 加密验证逻辑(Base64版,看不到明文答案) </script> </html> """ # 直接返回网页,强制Content-Type,绝对不会下载/报错 @app.route("/we.html") def get_html(): return Response( HTML_CONTENT, content_type="text/html; charset=utf-8", headers={"Cache-Control": "no-cache"} ) # 兼容根路径访问 @app.route("/") def index(): return get_html() if __name__ == "__main__": app.run(host="0.0.0.0", port=9000)2. 极简依赖requirements.txt(只留 flask)
flask3. 部署后访问,直接成功
- 无需 OSS、无需 AK/SK、无需权限,完全独立运行
- 访问
https://audio-web-mpwulqeoed.cn-chengdu.fcapp.run/we.html直接渲染页面,零报错
四、常见错误速查(对应日志快速定位)
| 日志关键词 | 问题原因 | 解决方法 |
|---|---|---|
No such file or directory | 启动命令 / 文件名不匹配 | 把启动命令改成python3 app.py |
ModuleNotFoundError: No module named 'oss2' | 依赖未安装 | 检查requirements.txt,重新部署 |
InvalidAccessKeyId | AK 填错 / 无效 | 替换为正确的 RAM 子账号 AK |
SignatureDoesNotMatch | SK 填错 | 替换为正确的 RAM 子账号 SK |
NoSuchKey | OSS 里没有we.html | 检查 OSS 文件名,重新上传 |
Connection reset | 函数超时 / 实例崩溃 | 把执行超时时间从 60 秒改成 120 秒 |