模块 4 · 第 4 节
运行环境:为什么「在我电脑上能跑,发给别人就跑不了」
是什么
代码想要运行,需要一个合适的环境——正确的工具版本、正确的配置、正确的系统设置。"在我这能跑"不代表"在任何地方都能跑",因为不同环境之间可能存在差异。
解决什么问题
如果不理解运行环境的概念,你会在项目换了一台机器或部署到服务器上时遭遇各种莫名其妙的报错,而且完全不知道从哪里排查。
同一份代码,不同的命运
你在自己的电脑上精心开发了一个项目。一切运行正常,功能完美。你把代码发给了朋友,让他在自己的电脑上试试。
朋友回复你:"跑不起来,报了一堆错。"
你很困惑——明明是同一份代码啊?
答案是:代码是同一份,但运行代码的环境不同。
什么是运行环境
代码不是独自运行的。它需要依赖一系列外部条件才能正常工作——这些外部条件合在一起,就叫做运行环境。
一个典型的运行环境包括:
操作系统 ——Windows、macOS、Linux 在某些细节上的行为不同。
工具和版本 ——比如你用的是 Node.js 18,但朋友电脑上装的是 Node.js 16。同一个工具的不同版本,可能对某些功能的支持不同。
已安装的依赖 ——你的电脑上已经通过 npm install 装好了所有依赖,但朋友还没装。
配置信息 ——比如数据库的地址、API 密钥等。这些信息在你的电脑上有,但在朋友的电脑上没有。
任何一项不匹配,都可能导致代码无法正常运行。
环境变量:那些不能写在代码里的配置
在运行环境中,有一类特别重要的东西叫做环境变量。
环境变量是存储在操作系统层面的配置信息。你的代码在运行时会去读取它们,但它们不在代码文件里——它们存在于运行代码的那台机器的系统设置中。
最常见的例子就是 API 密钥。你的代码需要用到一个第三方服务的密钥,但你不能把密钥直接写在代码里(否则一旦代码公开,密钥就泄露了)。正确的做法是:把密钥存放在环境变量里,代码在运行时去环境变量中读取。
在实际开发中,项目通常会有一个叫 .env 的文件,专门用来存放这些环境变量。这个文件只在本地使用,不会被上传到代码仓库。当你把项目部署到服务器时,需要在服务器上单独配置这些变量。
为什么"在我电脑上能跑"不可靠
当你在自己的电脑上开发了一段时间之后,你的电脑已经不知不觉地积累了项目运行所需的一切条件——正确的工具版本、所有的依赖、本地的环境变量配置。
但这些条件是你的电脑独有的。换了任何一台机器——朋友的电脑、公司的测试服务器、云端的部署环境——这些条件都需要重新建立。
这就是为什么"在我电脑上能跑"是开发界最出名的一句笑话。它不是一个有效的验证,因为它只证明了代码在一个特定的、已经被你精心(或无意间)配置好的环境里能运行。
「在我电脑上能跑」不是有效验证
本地能跑只证明了代码在你这台被精心(或无意间)配置好的机器上能运行。上线时服务器是另一台全新机器——工具版本、依赖、环境变量都可能不同。最可靠的验证是在一个干净环境中从头按文档走一遍,如果你能跑通,别人大概率也能跑通。
怎么让代码在别的地方也能跑
确保环境一致性的方法其实不复杂:
记录前提条件。 在项目中维护一份说明,列出运行所需的工具和版本。AI 可以帮你生成这份文档。
用 .env.example 列出需要的环境变量。 不是写真实的密钥值,而是列出变量名和简短的说明,这样接手的人知道需要配置哪些东西。
在新环境中从头试一次。 最可靠的验证方式是:假装你是第一次接触这个项目,在一个干净的环境中按照说明文档走一遍。如果你能跑通,别人大概率也能跑通。
测试部署环境。 如果你的项目要部署到某个平台,部署之后一定要实际访问一下,确认它在服务器环境中也能正常运行——而不是仅凭本地的测试就断定"没问题"。
指挥与验收
一边讲怎么让 AI 帮你做,一边讲怎么看出 AI 做砸了。
指挥
连接到
术语
事故复盘