aws lambda中的梦魇下载管理器

Sam*_*Sam 5 javascript amazon-web-services node.js nightmare aws-lambda

我正在使用梦魇js来自动化文件下载.所以两天前我们决定将这个工具移到aws lambda中,我能够使用nightmare-lambda-tutorial获得使用噩梦运行的aws东西,但我的lambda使用了另一个噩梦模块噩梦 - download-manager添加此下载管理器,lambda失败并显示'MODULE_NOT_FOUND'消息,虽然我使用npm install安装了软件包,但我确实找到了node_modules中的文件夹和文件.

因此,通过调试,我发现即使使用最初的几行代码,lambda也会失败,例如,

var binaryPack = require('./lib/bootstrap/nightmare-lambda-pack'), 
Xvfb = require('./lib/bootstrap/xvfb'), 
Nightmare = require('nightmare');

require('nightmare-download-manager')(Nightmare); 
Run Code Online (Sandbox Code Playgroud)

第4行将导致模块未找到错误.知道如何解决这个问题吗?

Mik*_*ick 0

听起来确实像:

  • 您的新依赖项没有打包到您的可部署中.zip或者
  • 您的新 zip 未正确上传/部署。

我认为这个特定的包没有任何理由在 Lambda 环境中出现问题。我按照链接到的教程进行操作,部署并测试了 lambda,添加了nightmare-download-manager依赖项,重新打包并重新部署,一切都按预期进行。


验证您的部署

验证工作区和可部署 zip 文件中是否存在依赖项后,如果仍然存在问题,则需要验证 lambda 环境中是否存在依赖项。

node_modules我没有找到在 AWS 控制台中验证 的存在和内容的方法,但您可以使用 CLI 来执行此操作

aws lambda get-function --function-name <function-name>
Run Code Online (Sandbox Code Playgroud)

响应中包含一个链接(有效期为 10 分钟),您可以通过该链接下载部署代码的 zip 文件。下载此 zip,并验证node_modules/nightmare-download-manager其中是否包含所需的文件。

如果丢失,则说明您的打包或包的上传/部署出现问题。使用 AWS 控制台重新打包(压缩libnode_modulesindex.js)并重新部署。

假设它在那里,require问题中的陈述对我来说在 Node 4.3 和 Node 6.10 上都工作得很好。