You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js 19.7.0中fetch为何需--experimental-network-imports才能正常运行?

Node.js中fetch执行报错的原因分析

问题场景

我有一个简单的.js文件,代码如下:

fetch('https://dummyjson.com/products')
  .then(res => res.json())
  .then(console.log);

使用node ./filename.js执行该代码时,出现如下错误:

node:internal/errors:490
    ErrorCaptureStackTrace(err);
    ^

Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file and data are supported by the default ESM loader. Received protocol 'https:'
    at new NodeError (node:internal/errors:399:5)
    at throwIfUnsupportedURLScheme (node:internal/modules/esm/resolve:964:11)
    at defaultResolve (node:internal/modules/esm/resolve:1040:3)
    at nextResolve (node:internal/modules/esm/loader:163:28)
    at ESMLoader.resolve (node:internal/modules/esm/loader:835:30)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:416:18)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:76:40)
    at link (node:internal/modules/esm/module_job:75:36) {
  code: 'ERR_UNSUPPORTED_ESM_URL_SCHEME'
}

Node.js v19.7.0

但使用node --experimental-network-imports ./filename.js执行时就能正常运行并得到预期响应。我原以为fetch在Node.js中是默认原生支持的,19.7.0版本应该不再是实验性特性了,是不是我的理解有误?

问题分析与解答

  • 你的理解没错:fetch API在Node.js 19.7.0是稳定特性
    Node.js从v18开始就将fetch API设为稳定特性,v19.7.0自然默认支持,不需要额外的实验性参数来启用fetch本身。

  • 报错根源和fetch无关,是ESM加载器的限制
    你遇到的ERR_UNSUPPORTED_ESM_URL_SCHEME错误,是Node.js默认的ESM模块加载器的限制:它只允许加载file:和data:协议的模块,不支持直接加载https:协议的远程模块。

  • 为什么fetch代码会触发这个错误?
    大概率是你的文件被识别为ESM模块(比如package.json中设置了"type": "module",或者文件后缀是.mjs),且代码或依赖库中存在隐藏的网络URL模块导入语句(比如import 'https://xxx'这类写法)。当Node.js解析模块时遇到这类语句,就会抛出上述错误。而--experimental-network-imports参数的作用就是允许ESM加载器处理https:协议的模块导入,因此加上该参数后,模块解析错误被绕过,fetch就能正常执行。

  • 建议解决方向

    1. 检查代码及项目依赖,确认是否存在网络URL形式的模块导入,这才是报错的核心原因。
    2. 如果确认没有这类导入语句,可能是Node.js v19.7.0的临时bug,可以尝试升级到v19的最新版本,或者切换到更稳定的v18 LTS版本,问题通常能得到解决。

内容的提问来源于stack exchange,提问作者MarcL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 21:54:57