我正在构建一个使用serverless framework和typescript的无服务器应用程序,并使用亚马逊网络服务的用户身份验证。当我在local serverless environment中使用应用程序时,一切都正常。我可以注册用户,也可以让用户登录以接收jwt token
但是,当我将代码部署到亚马逊网络服务时,它会给出"message": "fetch is not a function",
因此,我经历了不同的github问题/堆栈溢出,看到每个人都通过在这篇文章-> Nuxt application with amazon-cognito-identity-js package gives error fetch is not defined中添加global.fetch类似的解决方案来建议类似的解决方案
global.fetch = require('node-fetch')
const AmazonCognitoIdentity = require('amazon-cognito-identity-js');所以我添加了上面的代码,并做了一个npm的node-fetch安装,并推送了代码,但是问题就不同了,因为我使用的是typescript,所以我不能使用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
所以我别无选择,我在寻找是否有人可以帮助我。
发布于 2019-11-20 00:29:47
较新版本的node fetch与webpack有问题,您可以在此帖子中找到这些问题。https://github.com/bitinn/node-fetch/issues/450
降级到node-fetch@1.7.3,让你的认知工作。
发布于 2020-08-13 23:53:22
如果在项目中使用了webpack,global.fetch将无法工作。在应用根目录添加下面的库。(推荐用于无服务器-webpack/任何其他用于lambda codestart的web包)
require('cross-fetch/polyfill');https://stackoverflow.com/questions/58548512
复制相似问题