AI 小工具创造入门
第三册

第7课:本地能跑,线上为什么会坏

把线上问题分成构建失败、环境变量缺失、接口错误、浏览器错误和路径错误。

线上报错分流图

先看一张直觉图

先不要急着修。

请先看这张图:

这张图想告诉你一件事:

线上坏了以后,第一步不是乱改代码,而是判断错误出现在哪里。

你不需要马上看懂每个技术词。

你只要先记住 5 个常见方向:

  • 构建失败。
  • 环境变量缺失。
  • 接口错误。
  • 浏览器错误。
  • 路径错误。

开始之前

请先拿出第 6 课的“第一次发布记录表”。

你至少应该有:

  • 部署平台名称。
  • 项目名称。
  • 公开网址。
  • 是否发布成功。
  • 打开后的结果。
  • 如果失败,平台或浏览器显示了什么。

如果你还没有公开网址,也可以上这节课。

只要你有部署失败日志,这节课也能帮你。

因为这节课的重点是:

我怎样把线上问题讲清楚。

先看一个小故事

小林的小红书标题助手在本地运行得很好。

他点击发布后,平台显示成功。

他打开公开网址,页面也出现了。

但他输入一句话,点击生成标题,页面一直转圈。

小林说:

它坏了。

先问:

哪里坏了?

小林说:

就是坏了。

再继续问:

页面打不开?
按钮没反应?
接口报错?
API Key 没读到?
还是访问了不存在的地址?

小林发现:

“坏了”太大了,AI 也很难直接判断。

于是他开始收集证据:

公开网址是什么?
我点了哪个按钮?
页面出现什么现象?
部署平台有没有日志?
浏览器有没有红色错误?

他把这些发给 Codex。

Codex 才能开始判断:

这个问题更像是线上环境变量没有配置,或者接口请求失败。

这就是第 7 课要训练的能力。

一、本地能跑,为什么线上会坏

很多人第一次看到线上出错,会以为:

是不是我的项目做错了?
是不是 AI 写得不行?
是不是我不适合做软件?

先不要这样想。

线上和本地不是同一个地方。

本地能跑,只说明:

在你的电脑里,它能运行。

线上能跑,还需要:

  • 平台安装依赖成功。
  • 构建命令执行成功。
  • 输出目录正确。
  • 线上环境变量正确。
  • 线上接口能访问。
  • 浏览器能加载页面资源。
  • 用户访问的网址正确。

所以本地能跑、线上坏了,很常见。

这不是能力问题。

这是软件从本地走到线上时,本来就会出现的检查过程。

二、线上问题先分成 5 类

遇到线上问题,先不要把所有东西混在一起。

请先分成 5 类。

类型常见现象先看哪里
构建失败平台发布失败,没有生成可打开页面部署日志
环境变量缺失本地能调用 AI,线上调用失败平台环境变量设置
接口错误页面能打开,点击后失败或一直转圈Network、平台日志、接口返回
浏览器错误页面空白、按钮没反应、红色错误浏览器 Console
路径错误404、图片丢失、刷新某页失败网址、路由、资源路径

你现在不需要完全会修。

你只要先会这样说:

这个错误更像发生在构建阶段。
这个错误更像发生在线上运行阶段。
这个错误更像发生在浏览器里。
这个错误更像是 API 或环境变量问题。

这已经比“坏了”清楚很多。

三、第一类:构建失败

构建失败通常发生在发布平台里。

你可能还没有看到公开网址,或者平台显示:

Build failed
Command failed
Error

这类问题常见原因包括:

  • 构建命令写错。
  • 安装依赖失败。
  • 某个包没安装。
  • 输出目录写错。
  • 代码在本地没暴露出来的问题,到了构建时才出现。

这时候不要只截图最后一行。

你要复制:

  • 平台名称。
  • 项目名称。
  • 构建命令。
  • 输出目录。
  • 完整报错日志中最关键的一段。

给 Codex 的说法可以是:

我在部署平台上发布失败了。
本地可以运行。
平台是:____。
构建命令是:____。
输出目录是:____。
下面是部署日志,请帮我判断失败原因,并告诉我先改哪一处。

四、第二类:环境变量缺失

环境变量缺失很常见。

尤其是带 AI 能力的小工具。

本地能调用 AI,不代表线上也能调用。

因为本地的 .env 文件通常不会自动上传到线上。

线上必须在部署平台里单独配置。

常见现象:

  • 页面能打开。
  • 输入内容后,点击按钮失败。
  • 本地可以生成结果,线上不行。
  • 日志里出现 API keyunauthorizedmissingundefined 之类的词。

这时候不要把真实 API Key 发给别人。

你可以告诉 Codex:

我怀疑是线上环境变量问题。
本地有 .env,但我不确定线上平台是否配置正确。
变量名是:____。
我不会发送真实 API Key。
下面是线上报错,请帮我判断变量名、读取方式或平台配置可能哪里不一致。

注意:

可以发变量名。
不要发真实密钥。

五、第三类:接口错误

接口错误通常发生在页面已经打开以后。

比如:

  • 页面能打开。
  • 输入框能输入。
  • 点击按钮后失败。
  • 结果区域一直转圈。
  • 页面提示请求失败。

如果你的小工具需要调用 AI、天气、翻译、数据库或自己的后端,就可能遇到接口错误。

常见错误码:

错误码先不用背,粗略理解即可
401可能没有权限,常和 API Key 有关
403可能被拒绝访问
404可能请求地址不存在
429可能请求太多或额度限制
500可能服务端出错

你不需要成为后端工程师。

只需要知道:

接口错误要告诉 Codex:我点了什么、请求了哪里、返回了什么。

可以这样问:

我的线上页面能打开,但点击按钮后接口请求失败。
公开网址是:____。
操作步骤是:____。
浏览器或平台显示的错误是:____。
请帮我判断这是 API Key、请求地址、跨域、额度还是服务端代码问题。

六、第四类:浏览器错误

浏览器错误通常发生在用户看到的页面里。

比如:

  • 页面空白。
  • 按钮没有反应。
  • 某些文字不显示。
  • 刷新以后页面变了。
  • 图片或样式没有加载。

这时候可以打开浏览器的开发者工具。

但本课不深入讲开发者工具。

你只要知道一个动作:

找到 Console 里的红色错误,复制给 Codex。

如果你不会打开,也可以直接问 Codex:

请一步一步教我在浏览器里打开 Console,并复制线上页面的红色错误。我的浏览器是:____。

拿到红字以后,再这样问:

我的线上页面打开后出现浏览器错误。
公开网址是:____。
操作步骤是:____。
Console 红色错误是:____。
请帮我判断这个错误大概来自哪个文件或哪个功能。

七、第五类:路径错误

路径错误最常见的表现是:

404
Not Found
页面刷新后消失
图片不显示
某个链接打不开

这类问题不一定是功能坏了。

有时只是访问路径、路由配置或资源路径不对。

比如:

  • 首页能打开,子页面打不开。
  • 从按钮进入某页可以,直接刷新那页不行。
  • 图片本地显示,线上不显示。
  • 复制的网址少了一段路径。

可以这样问 Codex:

我的线上项目出现路径问题。
公开网址是:____。
哪个地址打不开:____。
是直接访问失败,还是点击后失败:____。
错误显示:____。
请帮我判断是路由、资源路径、部署配置还是网址复制问题。

八、不要只说“坏了”

对 AI 来说,下面这些说法都太模糊:

坏了。
打不开。
没反应。
线上不行。
帮我修一下。

这些话不是不能说。

但只说这些,Codex 很难判断。

更好的说法是:

我本地可以运行,线上打开后点击“生成”按钮失败。
公开网址是:____。
我执行的操作是:____。
我看到的现象是:____。
部署平台日志是:____。
浏览器 Console 错误是:____。
请先判断错误属于哪一类,再告诉我第一步该检查什么。

这段话的力量在于:

它把问题从“情绪”变成了“证据”。

九、动手练习:线上报错分流

请看 5 条简单情况。

请你判断属于哪一类。

情况可能类型
平台显示 Build failed,没有生成网址构建失败
本地 AI 能回答,线上点击后提示 unauthorized环境变量或接口错误
页面能打开,但按钮点击后一直转圈接口错误或浏览器错误
线上打开某个地址显示 404路径错误
页面一片空白,Console 有红字浏览器错误

注意:

你不一定要一次判断完全准确。
只要能说出“我应该去哪里找证据”,就已经达标。

十、填写:线上报错描述卡

请你填写下面这张卡。

线上报错描述卡

项目我的记录
项目名称
本地是否能运行能 / 不能 / 不确定
部署平台
公开网址
问题发生阶段构建失败 / 打开页面 / 点击按钮 / 调用接口 / 刷新页面 / 其他
我做了什么操作
我看到什么现象
部署日志关键内容
浏览器 Console 错误
可能属于哪类问题构建失败 / 环境变量 / 接口错误 / 浏览器错误 / 路径错误 / 不确定
我已经发给 Codex 的信息
Codex 建议我先检查什么
下一步我要做什么

这张卡比“修好了没有”更重要。

因为它训练的是上线之后持续改项目的能力。

十一、给 Codex 的完整提示词

你可以直接复制下面这段。

我正在学习把自己的 AI 小工具发布到线上。

背景:
- 本地是否能运行:____
- 部署平台:____
- 公开网址:____
- 项目类型:____

线上问题:
- 问题发生阶段:构建失败 / 打开页面 / 点击按钮 / 调用接口 / 刷新页面 / 其他
- 我的操作步骤:____
- 我看到的现象:____
- 部署日志关键内容:____
- 浏览器 Console 错误:____

请你不要直接大改项目。
请先帮我判断这个问题更像属于哪一类:
1. 构建失败
2. 环境变量缺失
3. 接口错误
4. 浏览器错误
5. 路径错误

然后请告诉我:
1. 你判断的依据是什么。
2. 我还缺少哪一条证据。
3. 我第一步应该检查哪里。
4. 如果要改代码,请先给我一个最小修改方案。

十二、如果你完全看不懂报错

完全看不懂也没关系。

你可以先这样做:

  1. 复制公开网址。
  2. 写下你点了什么。
  3. 截图或复制页面提示。
  4. 找到部署日志。
  5. 如果能打开 Console,就复制红色错误。
  6. 把这些一起发给 Codex。

你不需要自己猜太多。

但你要给 AI 足够材料。

可以这样说:

我看不懂这个线上错误。
请你先不要假设我懂技术。
请你根据我提供的网址、操作步骤和错误信息,先判断还缺什么证据。
然后一步一步教我去哪里找。

这比直接说“帮我修”更好。

十五、常见误区

误区 1:平台显示成功,就一定没问题

不一定。

平台成功只说明发布流程完成。

还要打开公开网址,测试功能。

误区 2:线上坏了,就说明代码全错了

不一定。

可能只是环境变量没填。

也可能只是路径错了。

误区 3:把 API Key 发给 AI 更方便

不要这样做。

可以说变量名。

不要发送真实密钥。

误区 4:只发截图,不发文字

截图有帮助。

但日志和错误文字更适合让 AI 分析。

能复制文字就复制文字。

误区 5:一上来就让 AI 大改

先让 AI 判断错误类型。

再让 AI 给最小修改方案。

本课最低标准

完成本课,不要求线上问题一定修好。

只要做到下面 4 件事,就算完成:

  • 能说出线上问题大概属于哪一类,或明确写“不确定”。
  • 能提供公开网址或部署失败日志。
  • 能写出自己做了什么操作,以及看到什么现象。
  • 能用提示词让 Codex 先判断错误类型,而不是直接乱改项目。

如果你已经修好了线上问题,可以加一项:

记录这次问题最后是怎么解决的。

十七、课后任务

完成“线上报错描述卡”。

如果你的线上项目没有报错,也要做一个模拟练习:

假设你的页面能打开,但点击按钮一直转圈。
请你填写一张线上报错描述卡,写出应该收集哪些证据。

任务提交内容:

  • 公开网址或部署失败截图。
  • 线上报错描述卡。
  • 发给 Codex 的提示词。
  • Codex 的第一轮判断。
  • 你准备执行的下一步。

十八、本课结束语

第 7 课结束时,你不一定已经修好了所有线上问题。

但你应该知道:

线上坏了不是终点。
线上坏了是一个可以描述、可以分类、可以继续解决的问题。

这比一次成功更重要。

因为真正做项目的人,迟早都会遇到线上问题。

会描述问题,才有机会修好问题。

On this page