【问题标题】:Aws lambda, cant run npm moduleAws lambda,无法运行 npm 模块
【发布时间】:2020-07-23 18:39:49
【问题描述】:

我正在尝试创建一个 AWS Lambda 函数来合并存储在 S3 中的 pdf 文件,但出现以下错误:

    Error: Command failed: java -jar  "/var/task/node_modules/easy-pdf-merge/jar/pdfbox.jar" PDFMerger "samplepdf1.pdf" "samplepdf2.pdf" "merged.pdf"
/bin/sh: java: command not found

    at ChildProcess.exithandler (child_process.js:294:12)
    at ChildProcess.emit (events.js:198:13)
    at maybeClose (internal/child_process.js:982:16)
    at Socket.stream.socket.on (internal/child_process.js:389:11)
    at Socket.emit (events.js:198:13)
    at Pipe._handle.close (net.js:607:12)
  killed: false,
  code: 127,
  signal: null,
  cmd:
   'java -jar  "/var/task/node_modules/easy-pdf-merge/jar/pdfbox.jar" PDFMerger "samplepdf1.pdf" "samplepdf2.pdf" "merged.pdf"' }

我已在 windows 本地安装并保存 npm 模块,将其全部压缩并上传为 aws lambda 函数,结构如下

myFunction.zip:
-node_modules
index.js
package.json
package-lock.json

【问题讨论】:

    标签: node.js aws-lambda node-modules


    【解决方案1】:

    错误很明显,您尝试在无法工作的节点 lambda 下调用 java 命令。

    我建议您创建另一个 lambda java 函数,该函数将接受要合并的 pdf 文件并将合并后的文件返回给您的原始 lambda 函数

    【讨论】:

    • github.com/rse/pdfbox-simple。这是为 Node 创建的,并提到需要 Java,这让我认为这是可能的,你确定它不能完成吗?
    • 这是一个 Lambda 环境,不像普通的服务器环境,您可以在那里安装二进制文件,并且并非所有 npm 包,尤其是需要外部二进制文件的 npm 包都可以在那里正常工作!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 2020-11-10
    • 2016-03-30
    • 2019-01-05
    • 2020-10-05
    相关资源
    最近更新 更多