换个角度想
运行时像代码的水土:同一份 JavaScript,种在浏览器里能用 DOM 和 window,种在 Node.js 里能读文件、连数据库——水土不同,长得出的能力不同;水土不服,就地报错。
术语 · 后端
Runtime
代码实际执行时依赖的环境,例如 Node.js、浏览器或 Cloudflare Workers。
同一份代码,不同的水土
fetch()发起请求
document操作页面
fs.read()读取文件
运行时像代码的水土:同一份 JavaScript,种在浏览器里能用 DOM 和 window,种在 Node.js 里能读文件、连数据库——水土不同,长得出的能力不同;水土不服,就地报错。
document.querySelector('h1')
想找页面上的大标题
DOM✓ 有
fetch✓ 有
文件系统✗ 没有
文件系统✓ 有
fetch✓ 有
DOM✗ 没有
fetch✓ 有
KV 存储✓ 有
DOM / 文件✗ 没有
写下一份 JavaScript
传统服务器跑 Node,边缘节点跑 Workers——按需选水土。
「window is not defined」= 在服务端跑了浏览器专属的代码。
本地 Node 22、线上 Node 18,同一份代码可能两种表现。
代码在你电脑上跑得好好的,部署上线就报「fs is not defined」。怎么回事?
代码用了 Node.js 的文件能力(fs),但线上是边缘运行时,那里没有文件系统——不是代码坏了,是水土换了。让 AI 改用目标运行时支持的方案即可。
写代码前先问一句「这段跑在哪」。运行时决定能力边界,跨界调用是「本地好好的,一上线就崩」最常见的原因。