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

Node.js中使用Headers对象报错ReferenceError: Headers is not defined求助

解决ReferenceError: Headers is not defined错误

错误原因

Headers是浏览器环境专属的API,你的代码运行在Node.js环境中,Node.js默认不全局提供这个对象,因此触发该错误。另外,Node.js在v18版本之前也没有内置fetchAPI,这也是需要注意的潜在问题。

解决方法

方法一:直接用普通对象定义请求头(无需额外依赖)

不需要使用Headers,请求头本质可以用普通键值对对象替代,代码修改如下:

var requestOptions = {
  method: 'GET',
  redirect: 'follow',
  headers: {
    "apikey": "the API key is here"
  }
};

// Node.js v18及以上版本可直接使用fetch;若版本低于v18,建议用方法二
const data = fetch("https://api.apilayer.com/fixer/timeseries?start_date=2021-01-01&end_date=2021-12-31", requestOptions)
  .then(response => response.text())
  .then(result => {
    console.log(result); // 在这里处理返回结果,避免异步时序问题
    return result;
  })
  .catch(error => console.log('error', error));

方法二:安装node-fetch兼容浏览器API(适合低版本Node.js)

如果需要继续使用Headers和fetch,可以安装node-fetch包:

  1. 安装依赖:
npm install node-fetch@2

(选择v2版本是因为它支持CommonJS模块,无需修改package.json配置)

  1. 修改代码导入对应模块:
const fetch = require('node-fetch');
const Headers = fetch.Headers;

var myHeaders = new Headers();
myHeaders.append("apikey", "the API key is here");

var requestOptions = {
  method: 'GET',
  redirect: 'follow',
  headers: myHeaders
};

const data = fetch("https://api.apilayer.com/fixer/timeseries?start_date=2021-01-01&end_date=2021-12-31", requestOptions)
  .then(response => response.text())
  .then(result => {
    console.log(result);
    return result;
  })
  .catch(error => console.log('error', error));

额外提示

原代码中console.log(requestOptions)会在fetch请求完成前执行,因为fetch是异步操作。如果需要查看请求结果,务必在then回调内处理。

内容的提问来源于stack exchange,提问作者MR. potato35

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:24:37