术语 · 后端

运行时

Runtime

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

同一份代码,不同的水土

code.js · 同一份代码

fetch()发起请求

document操作页面

fs.read()读取文件

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

换个角度想

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

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

  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边缘节点上同样没有页面

写下一份 JavaScript

什么时候会遇到它

  1. 选部署形态

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

  2. 看懂报错

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

  3. 对齐版本

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

想一想

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

看答案

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

最容易踩的坑

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

⌘K搜索知识库

最近收录

正在载入知识索引…