首页 > 解决方案 > 使用 aws-cognito-identity-js 时获取的类型错误

问题描述

我正在使用 and 构建一个无服务器应用程序serverless frameworktypescript并使用 aws cognito 进行用户身份验证。当我在local serverless environment一切正常使用该应用程序时。我可以注册一个用户,也可以让用户登录以接收jwt token

但是当我将代码部署到 aws 时,它给了我 "message": "fetch is not a function",

所以我经历了不同的 github 问题/堆栈溢出,看到每个人都通过添加 global.fetch 来建议类似的解决方案 在这篇文章中类似的解决方案 -> Nuxt 应用程序与 amazon-cognito-identity-js 包给出错误 fetch is not defined

global.fetch = require('node-fetch')
const AmazonCognitoIdentity = require('amazon-cognito-identity-js');

所以我添加了上面的内容并执行了 node-fetch 的 npm install 并推送了代码,但是问题不同了,因为我使用的是打字稿,所以我不能使用global.fetch

所以我找到了不同的方法来改变本地

Way 1 
const globalAny:any = global;
globalAny.fetch = require('node-fetch');

Way 2
(global as any).fetch = require('node-fetch');

Way 3 -> Written at the end of this post. https://stackoverflow.com/questions/48433783/referenceerror-fetch-is-not-defined

当我在本地和 AWS LAMDA 中以两种方式运行它时,它会失败并出现相同的错误

TypeError: fetch is not a function

所以我别无选择,正在寻找是否有人可以帮助我。

标签: javascripttypescriptamazon-web-servicesamazon-cognitoserverless-framework

解决方案


较新版本的 node fetch 存在与 webpack 相关的问题,您可以在此线程中找到相关信息。https://github.com/bitinn/node-fetch/issues/450

降级以node-fetch@1.7.3使您的 cognito 正常工作。


推荐阅读