当前位置: 首页 > 知识库问答 >
问题:

AWS Lambda错误:“找不到模块'/var/task/index'”

袁鸿达
2023-03-14

Node.jsAlexa任务问题

我目前正在编写一个节点。通过AWS Lambda编写js Alexa任务,我一直在尝试编写一个函数,该函数从OpenWeather API接收信息,并将其解析为一个名为weather的变量。相关代码如下:

var request = require('request');
var weather = "";
function isBadWeather(location) {
      var endpoint = "http://api.openweathermap.org/data/2.5/weather?q=" + location + "&APPID=205283d9c9211b776d3580d5de5d6338";
      var body = "";
      request(endpoint, function (error, response, body) {
            if (!error && response.statusCode == 200) {
                  body = JSON.parse(body);
                  weather = body.weather[0].id;
            }
      });
}

function testWeather()
{
      setTimeout(function() {
      if (weather >= 200 && weather < 800)
            weather = true;
      else
            weather = false;
      console.log(weather);
      generateResponse(buildSpeechletResponse(weather, true), {});
      }, 500);
}

我在Cloud9和其他IDE中运行了无数次这个片段,它似乎工作得完美无瑕。但是,当我将其压缩到包中并将其上传到AWS Lambda时,我会收到以下错误:

{
    "errorMessage": "Cannot find module '/var/task/index'",
    "errorType": "Error",
    "stackTrace": [
        "Function.Module._load (module.js:276:25)",
        "Module.require (module.js:353:17)",
        "require (internal/module.js:12:17)"
    ]
}

我安装了moid-js、Request和许多其他应该使此代码运行的Node模块,但似乎没有什么可以解决这个问题。这是我的目录,以防万一:

- planyr.zip
   - index.js
   - node_modules
   - package.json

有人知道问题是什么吗?

共有3个答案

宋唯
2023-03-14

检查文件名和处理程序名是否相同:

这意味着zip文件有包。js导出处理程序的文件函数:

exports.handler = (event, context, callback) => {//...}
郜昊苍
2023-03-14

更新到已接受的答案:发生此错误时,表示您的zip文件不是AWS要求的有效形式。

如果您双击zip,您将在您的代码文件中找到您的文件夹,但lambda希望当您双击zip时,它应该显示直接代码文件。

要实现这一点:

open terminal  
cd your-lambda-folder 
zip -r index.zip *

然后,将index.zip上传到AWS Lambda。

皇甫学海
2023-03-14

修复它!我的问题是我试图使用我的Mac在Finder中的内置压缩功能压缩文件。

如果你是一个Mac用户,像我一样,你应该在终端运行以下脚本,当你在你的项目的根目录(文件夹包含你的index.jsnode_modules等文件)。

zip -r ../yourfilename.zip *

对于Windows:

Compress-Archive -LiteralPath node_modules, index.js -DestinationPath yourfilename.zip
 类似资料:
  • 问题内容: Node.js Alexa任务问题 我目前正在通过AWS Lambda编写Node.js Alexa任务的代码,并且一直在尝试编写一个函数,该函数从OpenWeather API接收信息并将其解析为一个名为的变量。相关代码如下: 我在Cloud9和其他IDE中无数次运行了此代码片段,并且该代码片段似乎正常运行。但是,当我将其压缩到一个程序包中并上传到AWS Lambda时,出现以下错误

  • 问题内容: 我已经很长时间没有使用Node.js了,也从未使用过express。当我启动应用程序时,它刚刚返回: 启动test.html时发生错误。这是代码: 我自己的路 : 为什么呢 编辑: 这是我的新app.configure: 但它返回: 问题答案: 我假设test.html是一个静态文件。要渲染静态文件,请像这样使用静态中间件。 这告诉express在应用程序的公共目录中查找静态文件。 指

  • 我刚刚开始使用webpack,很难获得多入口点示例来构建。网页包。配置。示例中的js文件包括以下行 这对我来说是个错误 在四处搜索时,我找到了将CommonChunkPlugin与表达式一起使用的其他示例 失败并出现错误 进一步搜索发现了许多示例,包括 我的构建现在失败了 我不知道该如何进行。

  • 当运行我的项目包时,我有上面的标题错误,在我试图使用 npm安装xml2json 但是,我只有以下错误,你能给我建议或想法,从这个问题中走出来吗... 编辑:: 1 在我安装了更新的Visual Studio 2005到2012后,当我运行npm安装xml2json和npm安装xml2json--unsece-perm时,我得到下面的错误, 提前感谢,戈帕尔·R

  • 运行command:时,出现以下错误: 错误输出:module.js:339 throw err;^错误:在Function.module._resolveFileName(module.js:337:15)在Function.module._load(module.js:287:25)在module.require(module.js:366:17)在require(module.js:385:

  • 问题内容: 我的Node应用程序在本地运行良好,但是在部署到Heroku时遇到错误。该应用程序使用Sequelize在一个文件夹,其中包含,和。在本地,我可以使用中的以下代码导入模型: 这很好,但是,当我部署到Heroku时,应用程序崩溃并显示以下错误: 最初我以为是由于区分大小写(本地mac与heroku linux),但是我移动了文件,进行了git commit,然后又移回并再次提交,以确保在