LESSON 5.2 / BACKEND & API

后端运行环境与依赖隔离

后端代码要在明确的运行时和依赖环境中执行。知道当前用的是哪一个可执行文件,才能复现安装与报错。

预计阅读约 25 到 40 分钟
完成结果建立项目级隔离环境,从依赖清单完成安装,并能指出命令实际使用的运行时路径。
本课目标
  • 建立项目级隔离环境,从依赖清单完成安装,并能指出命令实际使用的运行时路径。
  • Python/Java/Node 等运行环境与代码的关系
  • 观察后端运行环境与依赖隔离后,应当建立项目级隔离环境,从依赖清单完成安装,并能指出命令实际使用的运行时路径,并保留状态码、响应结构、进程输出和前后端同一次请求作为可重复检查的依据。
开始之前
  • 完成 5.1「亲手调用一次真实 API」
01

FOUNDATION

必须理解

后端代码依赖特定运行时、版本和第三方包。项目级隔离让同一台电脑上的多个项目互不污染,也让别人能根据清单重建相同环境。

本课依次讲清Python/Java/Node 等运行环境与代码的关系、虚拟环境或项目级依赖和依赖清单、锁定版本和可复现安装,最后通过“运行开发与构建命令,比较两种环境输出”检查学习结果。

先建立整体直觉

不同项目像不同实验,每个实验有自己的器材清单和配比。把所有材料倒进公共箱,迟早不知道哪种版本属于哪个实验。

贯穿本课的实际场景

任务应用主线使用项目内 Node.js 与 npm 依赖;课程也识别 Python 虚拟环境和 Java 构建工具,让读者理解“环境隔离”是跨语言概念。

概念 1

Python/Java/Node 等运行环境与代码的关系

先用白话理解

运行时就是实际执行代码的程序,比如 Node.js、Python 解释器或 Java 虚拟机。终端最后找到的是哪个程序、哪个版本,会直接影响项目能不能跑。

基础概念

运行时是实际读取并执行代码的程序,例如 Node.js、Python 解释器或 Java 虚拟机 JVM。语言源码必须进入兼容运行时,版本会决定可用语法和 API。

进一步理解

终端根据 PATH 找到某个可执行程序,同名命令可能指向不同安装位置。`node --version` 只说明当前终端找到的版本,不说明其他窗口或部署环境相同。

Java 源码通常先编译成字节码再由 JVM 执行,TypeScript 也需转换成 JavaScript;“代码文件存在”并不代表系统知道用什么运行。

放进实际场景

任务后端声明需要 Node 22;开发机、构建环境和托管平台都要满足,否则可能在语法、模块或原生依赖处失败。

容易混淆的地方

编辑器显示的语言模式不是运行时。安装 TypeScript 扩展不会自动安装 Node,也不会决定部署使用哪个版本。

这一小节记住:先确认确实执行代码的程序、路径和版本。

概念 2

虚拟环境或项目级依赖

先用白话理解

项目需要的第三方包应该写进自己的依赖清单,而不是依赖你电脑上“以前好像装过”。换台机器时,清单才是可靠依据。

基础概念

项目级依赖把某个项目所需的第三方包和版本限制在该项目上下文;Python 虚拟环境、Node 的依赖目录和 Java 构建工具都在解决可隔离与可声明的问题。

进一步理解

全局安装会让项目依赖电脑的历史状态,换机器后无法知道缺了什么。项目清单则把需要的库、版本和脚本留在源码旁。

不同语言实现方式不同:Python 虚拟环境包含独立解释器环境,Node 常按项目解析 node_modules,Maven/Gradle 根据构建文件解析 Java 依赖。

放进实际场景

任务应用把数据库客户端列进 package.json;另一项目可以使用不同版本,两者不必争抢一个全局安装。

容易混淆的地方

隔离环境不等于容器,也不自动隔离数据库与网络;它主要控制运行时和代码依赖的来源。

这一小节记住:依赖属于项目,应由项目清单重建,而不是依靠“这台电脑以前装过”。

概念 3

依赖清单、锁定版本和可复现安装

先用白话理解

可复现安装的意思是:拿到同一份源码和锁文件,别人也能装出兼容环境。升级依赖要单独做、单独测,别在修其它问题时顺手全升。

基础概念

可复现安装是使用相同源码、依赖清单、锁文件和兼容运行时,能够重建功能等价的环境。锁定版本减少每次安装重新选择依赖带来的漂移。

进一步理解

可复现不只看顶层包,间接依赖也会改变行为。锁文件记录完整解析结果,持续集成可用干净环境验证清单是否真的足够。

升级应作为独立变更:先看发布说明,更新有限范围,运行测试,再提交新的锁文件。排错时顺手全升会同时改变太多变量。

放进实际场景

在新目录拉取任务应用后按锁文件安装,再运行构建与测试;若失败,比较 Node、系统和环境变量而不是立即重装一切。

容易混淆的地方

相同锁文件不能消除所有平台差异,原生模块、CPU 和系统库仍可能不同;可复现是缩小变量,不是绝对复制。

这一小节记住:版本、清单、锁文件和验证命令共同定义可重建环境。

02

AI COLLABORATION

AI 如何参与

在后端运行环境与依赖隔离这一课,AI 负责根据真实材料解释Python/Java/Node 等运行环境与代码的关系并指出遗漏,学习者负责控制范围、执行修改和核对状态码、响应结构、进程输出和前后端同一次请求。

推荐协作顺序

  1. 1

    先把实际 Node 路径、版本和项目目录发给 AI。

  2. 2

    让它对照 package.json 与锁文件寻找差异。

  3. 3

    只在证据指向安装问题时重装项目依赖,并保留原有包管理器。

可直接使用的 Prompt
请根据系统、终端、可执行文件路径、版本、依赖清单和完整错误做诊断。先判断当前环境,再给最小检查命令。不要建议连续重装,不删除锁文件或全局环境。
应该得到什么

先确认实际运行时和项目上下文,再针对错误提出最小变化,不通过反复重装掩盖原因;后端运行环境与依赖隔离的人工验收必须回到真实页面、请求、终端、测试或数据结果,不能用 AI 的文字说明代替。

人工检查清单

  • 确认命令在项目目录执行,使用现有包管理器与锁文件,不混用 npm、pnpm、yarn。
  • 让 AI 先列出实际可执行文件路径、版本、项目清单和锁文件差异,再提出最小实验。
  • 在干净项目环境重跑原失败命令,确认修复不依赖某个全局安装。
03

COMMON TRAPS

常见误区

下面三类问题会让任务看似完成,却经不起刷新、错误输入或真实环境检查。先看现象,再找原因和修正方法。

误区 1

把所有包全局安装

你会看到
换项目后版本相互冲突
为什么发生
全局版本不随项目记录,换电脑或换项目后很难复现同一环境。
怎样纠正
在项目环境中安装并记录
误区 2

只说安装失败

你会看到
缺少命令、路径和第一条错误
为什么发生
没有命令、路径和第一条错误,就无法判断问题发生在解析、权限还是网络。
怎样纠正
保留完整环境与输出
误区 3

混用多个环境管理器

你会看到
终端显示激活,命令却来自另一套环境
为什么发生
终端可能显示一个环境名称,却从 PATH 中找到另一套解释器和依赖。
怎样纠正
检查可执行路径再继续
04

HANDS-ON

动手任务

建立项目级隔离环境,从依赖清单完成安装,并能指出命令实际使用的运行时路径。

准备条件
  • 完成 5.1「亲手调用一次真实 API」

跟着做

  1. 01

    记录 Node 和 npm 的实际路径与版本。

  2. 02

    查看 package.json 中 engines、scripts 和 dependencies。

  3. 03

    解释 package-lock.json 与 node_modules 的区别。

  4. 04

    在新练习目录按锁文件安装依赖。

  5. 05

    运行开发与构建命令,比较两种环境输出。

完成标志

建立项目级隔离环境,从依赖清单完成安装,并能指出命令实际使用的运行时路径。

加餐挑战

用表格对比 Node 项目依赖、Python 虚拟环境和 Java Maven 的对应概念。

离开本课前,自问四件事

  • 运行时、语言源码和编辑器插件有什么区别?
  • 项目级依赖隔离在 Node、Python 与 Java 中分别如何体现?
  • 可复现安装至少依赖哪些信息?
  • 为什么升级依赖应该单独进行并单独验证?
完成本课了吗?

确认完成后,会同步更新学习中心的课程学习进度。