如何在不原生支持fetch的Node版本中使用Next.js后端的fetch?
Next.js 在 Node 17.5 前支持后端 fetch 的实现方式
Next.js 之所以能在 Node 17.5(原生支持 fetch 的版本)之前就在后端(如 getStaticProps、getServerSideProps 这类服务端/构建时运行的函数)使用 fetch,核心是框架内置了 fetch 的跨环境 polyfill,具体细节如下:
内置 polyfill 抹平环境差异:Next.js 为了实现前后端统一的 API 体验,预先集成了适配 Node 环境的 fetch 实现。早期版本主要依赖
isomorphic-unfetch这个库——它在浏览器端直接复用原生 fetch,在 Node 端则基于node-fetch(专门为 Node 环境开发的 fetch 兼容库)做封装,让开发者不用关心环境差异,直接调用标准的 fetch API 即可。自动适配运行环境:当你在
getStaticProps或getServerSideProps里写 fetch 代码时,Next.js 会自动判断当前运行环境:如果是浏览器,就用原生 fetch;如果是 Node(构建阶段或服务端渲染阶段),就切换到内置的 polyfill 实现,完全不需要开发者手动引入或配置额外依赖。后续版本的演进:即使到了 Next.js 13+ 改用 App Router 之后,框架依然保留了对 fetch 的内置支持,甚至在此基础上增加了缓存、重新验证等增强特性,但在 Node 17.5 之前的版本中,核心逻辑还是依赖 polyfill 来提供 fetch 能力。
内容的提问来源于stack exchange,提问作者Sourav Das
相关产品推荐
相关产品推荐

