创建AWS Lambda函数很痛苦,当我将同一个服务从GCF移植到lambda时,通过处理一些功能(如aws lambda中的上下文)并部署了.zip,我能够轻松地使用Google Cloud Function部署相同的微服务。该项目。它开始引发如下所示的未知错误。 lambda函数在本地环境中效果很好,

{
  "errorMessage": "callback called with Error argument, but there was a problem while retrieving one or more of its message, name, and stack"
}


并且日志在代码开始的父脚本中显示了语法错误,但是在index.js中没有语法错误,这是我通过运行节点index.js确认的,无论如何我都已附加index.js的代码段在底部


  START RequestId:7260c7a9-0adb-11e7-b923-aff6d9a52d2d版本:
  $ LATEST模块“索引”中的语法错误:SyntaxError
  END RequestId:7260c7a9-0adb-11e7-b923-aff6d9a52d2d


我开始缩小导致问题的软件的范围,我删除了所有依赖关系,并开始一个接一个地运行,并在每次上传zip时运行lambda,最后找到了导致问题的元凶,这是phantomjscloud造成了问题。

当我包含const phantomJsCloud = require('phantomjscloud')时,它会抛出该错误,即使我的npm_modules也包含了phantomjscloud模块。在AWS Lambda和phanthomjscloud之间是否存在任何已知的故障,不知道如何解决,请随时询问任何信息,如果您觉得我错过了任何事情。

在这里,不包含const phantomJsCloud = require('phantomjscloud')的代码效果很好

global.async = require('async');
global.ImageHelpers = require('./services/ImageHelpers');
global.SimpleStorage = require('./services/SimpleStorage');
global.uuid = require('uuid');
global.path = require('path');

const phantomJsCloud = require('phantomjscloud')
const aadhaarController = require('./controllers/Aadhaar')
exports.handler = (event, context) => {
    // TODO implement
    aadhaarController.generateAadhaarCard(event,context);
};


包含phantomjscloud时,来自aws lambda函数的错误消息:

最佳答案

AWS使用了不支持phantomjscloud的节点版本4.3,这就是它仅与运行时环境为6.9.2的google cloud函数一起使用的原因,现在它已由作者修复,如果您看到此消息的话,回答您可能正在使用phantomjscloud不支持的其他版本的节点,提出了github问题即可解决该问题

关于node.js - Phantomjscloud无法与AWS Lambda Node.js一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42850980/

10-09 23:36