javascript - 使用 aws-cognito-identity-js 时获取的类型错误
问题描述
我正在使用 and 构建一个无服务器应用程序serverless framework
, typescript
并使用 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
所以我别无选择,正在寻找是否有人可以帮助我。
解决方案
较新版本的 node fetch 存在与 webpack 相关的问题,您可以在此线程中找到相关信息。https://github.com/bitinn/node-fetch/issues/450
降级以node-fetch@1.7.3
使您的 cognito 正常工作。
推荐阅读
- python - PyGithub:如何使用 get_repositories 搜索多个主题
- amazon-web-services - 我们可以将 Amazon Honeycode 应用程序移至 Android Play 商店吗?
- vba - 将每个数组项输出到文本框中的行中
- java - 从满足条件的数组中获取随机对象
- scala - sbt 错误:对象 spark 不是包 org.apache 的成员
- java - 使用 Java Spring Framework 连接到 SQL Server 时出错 - 无法加载 JDBC 驱动程序类
- mysql - 在内部连接中迭代地使用 MySQL LAG()
- odoo - 我有一个 many2many 表,但我需要提供域,因为只有模型中的合作伙伴记录需要显示在 many2many 表中
- git - Git extensions not working in VSCode for only one project
- python - 如何在cvxpy中写日志函数的透视图?