【问题标题】:Function works locally but not on AWS Lambda函数在本地工作,但不能在 AWS Lambda 上工作
【发布时间】:2023-03-12 13:44:01
【问题描述】:

我正在使用jsreport 渲染 HTML 并生成 PDF 文件,它可以在本地工作,但在 Lambda 上,它会抛出此错误:

{
  "errorMessage": "Error during rendering report: Cannot read property 'filter' of undefined",
  "errorType": "TypeError",
  "stackTrace": [
    "Phantom.execute (/var/task/node_modules/jsreport-phantom-pdf/lib/phantom.js:169:53)",
    "/var/task/node_modules/jsreport-core/lib/render/render.js:118:23",
    "tryCatcher (/var/task/node_modules/bluebird/js/release/util.js:16:23)",
    "Promise._settlePromiseFromHandler (/var/task/node_modules/bluebird/js/release/promise.js:512:31)",
    "Promise._settlePromise (/var/task/node_modules/bluebird/js/release/promise.js:569:18)",
    "Promise._settlePromise0 (/var/task/node_modules/bluebird/js/release/promise.js:614:10)",
    "Promise._settlePromises (/var/task/node_modules/bluebird/js/release/promise.js:693:18)",
    "Async._drainQueue (/var/task/node_modules/bluebird/js/release/async.js:133:16)",
    "Async._drainQueues (/var/task/node_modules/bluebird/js/release/async.js:143:10)",
    "Immediate.Async.drainQueues (/var/task/node_modules/bluebird/js/release/async.js:17:14)",
    "runCallback (timers.js:672:20)",
    "tryOnImmediate (timers.js:645:5)",
    "processImmediate [as _immediateCallback] (timers.js:617:5)"
  ]
}

相同的环境变量,相同的节点版本。

【问题讨论】:

  • 有关提出好问题的提示,请参阅:How do I ask a good question?
  • 快速仅供参考,如果您在本地运行的节点版本高于当前的 AWS 运行时,您可以获得在 AWS 上启用的具有不同功能的不同版本的节点模块,如果您是在本地进行测试,确保您使用的节点版本与在 aws 上的相同。

标签: aws-lambda jsreport


【解决方案1】:

这是产生上述错误的行:https://github.com/jsreport/jsreport-phantom-pdf/blob/ad8d42e640348abffe77f2fed818528bee3eed98/lib/phantom.js#L169

var phantom = this.definition.options.phantoms.filter(function (p) {
  return p.version === request.template.phantom.phantomjsVersion
})

这意味着对象路径options.phantoms 未定义。

您必须检查 definitions 在您的 Lambda 中是如何设置的。

【讨论】:

  • 感谢您的回答。我想通了。
【解决方案2】:

事实证明,这是这个库的问题:node-app-root-path

我通过将正确的 rootDirectory 选项传递给 jsreport 来修复它。

【讨论】:

    猜你喜欢
    • 2017-06-05
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    相关资源
    最近更新 更多