返回术语

后端

运行时Runtime

你可能会问

运行时到底是什么?为什么同一份代码换个地方就跑不起来?

简单来说

代码实际执行时依赖的环境,例如 Node.js、浏览器或 Cloudflare Workers。

动态说明同一份代码,不同的水土Runtime
code.js · 同一份代码

fetch()发起请求

document操作页面

fs.read()读取文件

此刻它只是文本
水土不同,能力清单不同
代码本身只是文本;跑在哪个运行时里,决定了它能调用哪些能力。

01 · 先这样理解

把抽象概念放进真实场景

代码实际执行时依赖的环境,例如 Node.js、浏览器或 Cloudflare Workers。

换个角度想

运行时像代码的水土:同一份 JavaScript,种在浏览器里能用 DOM 和 window,种在 Node.js 里能读文件、连数据库——水土不同,长得出的能力不同;水土不服,就地报错。

02 · 点击演示

同一行代码,插在哪个运行时上?

突出显示的部分,就是当前概念在整条流程中负责的位置。

  1. document.querySelector('h1')

    想找页面上的大标题

    当前步骤
  2. 同一行代码,插到不同的水土里
    等待进入
  3. 浏览器的能力清单

    DOM✓ 有

    fetch✓ 有

    文件系统✗ 没有

    Node.js 的能力清单

    文件系统✓ 有

    fetch✓ 有

    DOM✗ 没有

    Workers 的能力清单

    fetch✓ 有

    KV 存储✓ 有

    DOM / 文件✗ 没有

    等待进入
  4. OK找到了 h1DOM 是浏览器的本土能力
    Errordocument is not definedNode 里没有页面,自然没有 DOM
    Errordocument is not defined边缘节点上同样没有页面
    等待进入
1 / 4

Code · 写下一份 JavaScript

03 · 放进真实任务

什么时候会遇到它

选部署形态

传统服务器跑 Node,边缘节点跑 Workers——按需选水土。

看懂报错

「window is not defined」= 在服务端跑了浏览器专属的代码。

对齐版本

本地 Node 22、线上 Node 18,同一份代码可能两种表现。

04 · 想一想

用一个问题检查理解

代码在你电脑上跑得好好的,部署上线就报「fs is not defined」。怎么回事?

查看答案

代码用了 Node.js 的文件能力(fs),但线上是边缘运行时,那里没有文件系统——不是代码坏了,是水土换了。让 AI 改用目标运行时支持的方案即可。

老师提醒

最容易踩的坑

写代码前先问一句「这段跑在哪」。运行时决定能力边界,跨界调用是「本地好好的,一上线就崩」最常见的原因。

⌘K搜索知识库

最近收录

正在载入知识索引…