【问题标题】:Facing issues when uploaded a zip code in aws lambda在 aws lambda 中上传邮政编码时面临的问题
【发布时间】:2017-04-07 15:10:16
【问题描述】:

我是 aws 新手,刚开始通过一些 youtube 教程使用 aws lambda,并且能够在 Web 编辑器本身上成功编写 aws lambda 函数。

但我尝试从本地系统上传 zip 文件,在该系统中我编写了一个使用模块“fs”和“fill-pdf”的 node.js 代码。但是当我尝试运行代码时,它给了我错误。

“错误”:找不到模块“/var/task/index”。 我通过互联网搜索并找到了一些链接,例如: https://github.com/lob/lambda-pdftk-example 我试过了,但它也显示同样的错误。

这是我的代码:

    var index = require('index');
    var fillPdf = require("fill-pdf");
    var fs = require('fs');
    var formDate = {
    'Employee Name': 'MyName',
    'Company Name': 'ComapnyName'
     };
    var pdfTemplatePath = "my.pdf";


    fillPdf.generatePdf(formDate, pdfTemplatePath, function(err,   
    output) {
    if ( !err ) {

         fs.writeFile('message.pdf', output, function (err) {
    if (err) throw err;
    console.log('It\'s saved! in same location.');
    });
     }
   });

问题是我不知道出现此错误的原因可能是什么。感谢您的帮助。

【问题讨论】:

  • 还有可以包含的错误信息吗?
  • { “errorMessage”:“找不到模块'/var/task/index'”,“errorType”:“错误”,“stackTrace”:[“Function.Module._load(module.js :276:25)”、“Module.require (module.js:353:17)”、“require (internal/module.js:12:17)”] }
  • 已解决:我在节点模块文件夹中的错误是没有索引模块。 Aso 我必须编写一个处理函数,它将以 aws lambda 理解的方式。直接节点 js 代码不会在 aws lambda 中运行。

标签: node.js aws-lambda


【解决方案1】:

删除var index = require('index'); 行,因为它没有在您的代码中使用。我不确定为什么安装后找不到模块,但在您当前的示例中,您不需要它。

【讨论】:

  • 是的,我删除了。其实我也关注了这个链接:stackoverflow.com/questions/30678348/…
  • 现在错误已经改变。它是 { "errorMessage": "Process exited before completed request" }
  • 如果有更多代码更改和新错误,请更新您的问题。
  • 不,先生,没有代码更改,也没有新的错误消息。
【解决方案2】:

确保您压缩的不是文件夹,而是其内容。检查您的 zip 是否在其根目录中包含 index.js

【讨论】:

  • 哦,你在开玩笑......我浪费了 3 个小时的时间来检查代码并试图找出问题所在:(
  • @lyoseg,如果您不压缩文件夹,如何将其上传到亚马逊?您只能选择以 .zip 结尾的文件夹?
  • @arcom 我的意思是你应该压缩文件夹的内容,而不是文件夹本身。 (意思是当你解压时你得到的是文件,而不是文件夹)
  • 知道了@lyosef。如果其他人感到困惑,你应该进入你的“lambda_function”文件夹。右键单击并选择所有内容(例如 index.js、node_modules、package.json),然后选择压缩。至少在我的 Mac 上,这将创建一个名为 Archive.zip 的文件。这就是您将上传到 AWS 的内容。
【解决方案3】:

错误可能是由于以下原因:

1. Properly zip the folder wait for it's zipping process completion and 
 then upload.

2. First run the main.js file locally like using node main.js and check 
 are there any errors showing in the terminal window, if it does then 
 fix them and then upload.

3. Also there must be handler file that lambda needs, which is must 
  so if you have the handler.js file then when in aws lambda you 
 create a lambda function and check the configuration setting there 
 then do update the name of the handler file name with yours like by 
 default it is index.js may be you would have lambda.js do change it 
 with lambda name (example lambda.handler)

【讨论】:

    【解决方案4】:

    出现此错误意味着您的 zip 是 不是 aws 要求的有效形式。

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

    要实现这一点:

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

    然后将 index.zip 上传到 lambda

    【讨论】:

      猜你喜欢
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 2020-04-21
      • 2011-04-11
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多