Puppeteer无法启动浏览器

问题描述 投票:0回答:1

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

我已经从AWS和Docker安装了SAM,AWS表示需要在本地运行Lambda。

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

ErrorError

似乎存在关于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合作过,所以不确定是否可能是问题所在?预先感谢您的帮助。

node.js amazon-web-services docker aws-lambda pdf-generation
1个回答
0
投票

看来我不得不使用chrome-aws-lambda提供的路径。因此,生成浏览器的代码如下所示:

   browser = await chromium.puppeteer.launch({
            args: chromium.args,
            defaultViewport: chromium.defaultViewport,
            executablePath: await chromium.executablePath,
            headless: chromium.headless
        });
    
© www.soinside.com 2019 - 2024. All rights reserved.