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

NodeJS+AWS Lambda环境中aws-appsync报fetch未找到错误求助

解决AWS Lambda中AWSAppSyncClient初始化时的"fetch is not found globally"错误

这个错误的核心原因是:AWS Lambda运行的Node.js环境默认没有全局的fetch API,而aws-appsync依赖的apollo-link-http组件会尝试调用全局fetch,找不到就会抛出这个异常。下面给你两种可行的解决办法:

方法一:全局polyfill fetch

  1. 先安装node-fetch依赖:
npm install node-fetch
  1. 在初始化AWSAppSyncClient的代码开头,把fetch挂载到全局:
const fetch = require('node-fetch');
global.fetch = fetch;

// 后续正常初始化客户端
const AWSAppSyncClient = require('aws-appsync').default;
const client = new AWSAppSyncClient({
  url: '你的AppSync端点URL',
  region: '你的AWS区域',
  auth: {
    type: 'API_KEY', // 按需替换成AWS_IAM、AMAZON_COGNITO_USER_POOLS等认证类型
    apiKey: '你的AppSync API密钥'
  }
});

方法二:直接给AWSAppSyncClient传入fetcher

不想污染全局变量的话,可以直接在客户端配置里指定fetcher:

  1. 同样先安装node-fetch:
npm install node-fetch
  1. 初始化时添加fetch配置项:
const fetch = require('node-fetch');
const AWSAppSyncClient = require('aws-appsync').default;

const client = new AWSAppSyncClient({
  url: '你的AppSync端点URL',
  region: '你的AWS区域',
  auth: {
    type: 'API_KEY',
    apiKey: '你的AppSync API密钥'
  },
  fetch: fetch // 直接传入fetcher实例
});

额外提示

如果你的Lambda运行时是Node.js 18或更高版本,AWS已经在环境中内置了全局fetch,这种情况下不需要安装任何额外依赖,直接升级Lambda的运行时版本就能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 23:57:28