基本上我试图从 API 网关调用 lambda 函数。该 API 是从我制作的 index.html 文件中调用的,该文件通过单击按钮调用 api 并返回值(最好是天气)。我可以让它返回一些文本值,但每当我尝试使用节点获取函数使用 lambda 函数实际调用 API 时,都会出现错误,提示“无法找到节点获取模块”。const fetch = require('node-fetch')module.exports.getTulsaCurrentWeather = (event, context, callback) => {//API endpointconst endpoint = `http://api.openweathermap.org/data/2.5/weather? APPID=${process.env.APPID}&q=Tulsa&units=imperial`;fetch(endpoint).then( res => res.json() ).then( body => {const response = { statusCode: 200, headers: { "Access-Control-Allow-Origin" : "*", }, body: JSON.stringify({ temperature: body.main.temp })};callback(null, response);});};
1 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
请参阅如何为 Node.js 构建 Lambda 部署包?
Node.js 中 Lambda 函数的一个常见错误是“找不到模块”。当您的部署包没有正确的文件夹结构供 Lambda 服务加载您的模块和库时,或者它具有不正确的文件权限时,通常会导致此错误。(Lambda 需要全局读取权限。)
按照以下说明构建部署包,其中包含 .zip 文件根目录中的函数代码,并对所有文件具有读取和执行权限。
请注意,您的代码也不会在 Lambda 之外运行,例如在您自己的计算机上,除非您之前已从node-fetch
NPM 安装了该软件包。
AWS Lambda 中的类似过程是打包并上传第三方依赖项,或者将包部署到 Lambda 层并配置 Lambda 函数以使用该层。Lambda 不npm install node-fetch
适合你。
添加回答
举报
0/150
提交
取消