我目前正在研究从HTML生成PDF的AWS Lambda。该lambda部署后即可正常运行,但是我希望使其在本地运行以简化开发。
我已经从AWS和Docker安装了SAM,AWS表示需要在本地运行Lambda。
在命令行的我的解决方案文件夹中,我正在运行sam local invoke "HelloWorldFunction" -e pdf/test-data/test.json
,它似乎可以正常运行,因为它表示正在获取它,然后将其安装到本地Docker容器中。但是,然后出现以下错误:
似乎存在关于chrome不存在的puppeteer可执行文件的错误,即使该文件不在其中也是如此。我正在使用以下变量:
const chromium = require("chrome-aws-lambda");
const puppeteer = require('puppeteer');
const pptr = require('puppeteer-core');
然后用于启动浏览器的代码如下:
const executablePath = event.isOffline
? "./node_modules/puppeteer/.local-chromium/win64-737027/chrome-win/chrome.exe"
: await chromium.executablePath;
browser = await chromium.puppeteer.launch({
args: chromium.args,
defaultViewport: chromium.defaultViewport,
executablePath: executablePath,
headless: chromium.headless
});
我已经尝试了在伪造者疑难解答中给出的设置,重新安装了程序包,但似乎无济于事。我的软件包也是以下版本:
我之前从未与docker合作过,所以不确定是否可能是问题所在?预先感谢您的帮助。
看来我不得不使用chrome-aws-lambda
提供的路径。因此,生成浏览器的代码如下所示:
browser = await chromium.puppeteer.launch({
args: chromium.args,
defaultViewport: chromium.defaultViewport,
executablePath: await chromium.executablePath,
headless: chromium.headless
});