木偶未能启动浏览器

时间:2020-06-12 08:19:03

标签: node.js amazon-web-services docker aws-lambda pdf-generation

我目前正在研究一个AWS Lambda,它可以从HTML生成PDF。该lambda部署后即可完美运行,但是我希望使其在本地运行以简化开发。

我已经从AWS安装了SAM,还安装了Docker,而AWS则要求在本地运行lambda。

在命令行的解决方案文件夹中,我正在运行sam local invoke "HelloWorldFunction" -e pdf/test-data/test.json,它似乎可以正常运行,因为它表示正在获取它,然后将其安装到本地docker容器中。但是,它会出现以下错误:

Error Error

关于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
        });

我尝试了在伪造者疑难解答中给出的设置,重新安装了程序包,但似乎无济于事。我的软件包也是以下版本:

Package Versions

我之前从未与docker合作过,所以不确定是否可能是问题所在?预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

似乎我不得不使用chrome-aws-lambda提供的路径。因此,生成浏览器的代码如下所示,并且可以正常工作:

   browser = await chromium.puppeteer.launch({
            args: chromium.args,
            defaultViewport: chromium.defaultViewport,
            executablePath: await chromium.executablePath,
            headless: chromium.headless
        });