Puppeteer在本地vs产品上的工作方式不同

时间:2019-10-07 17:12:09

标签: javascript puppeteer

let templateHtml = fs.readFileSync(
    path.join(process.cwd(), '../signedDocs/template.html'),
    'utf8'
);
// making a compilable out of the HTML file
let template = handlebars.compile(templateHtml);
console.log('creafte pdf 1');
// passing the data to the HTML
let html = template(dataPDF);

// constructing the path where the generated PF file will be stored
let pdfPath = path.join(process.cwd(), '../signedDocs/' + userID + '.pdf');
console.log('creafte pdf 2');
// PDF configuration
let options = {
    width: '1230px',
    headerTemplate: '<p></p>',
    footerTemplate: '<p></p>',
    displayHeaderFooter: false,
    printBackground: true,
    pageRanges: '1-6',
    format: 'A4',
    preferCSSPageSize: true,
    margin: {
        top: '10px',
        right: '20px',
        bottom: '60px',
        left: '20px'
    },
    path: pdfPath
};

console.log('creafte pdf 3.1');
// starting the browser with Puppeteer
const browser = await puppeteer.launch({
    args: ['--no-sandbox', '--disable-setuid-sandbox'],
    headless: true
});
console.log('creafte pdf 3.2');
// starting a new blank page
let page = await browser.newPage();

try {
    await page.goto(`data:text/html;charset=UTF-8,${html}`, {
        waitUntil: 'networkidle0' //command used so the page w/ modules waited to be loaded
    });
} catch (err) {
    console.log(err);
}
console.log('creafte pdf 4');
try {
    await page.pdf(options); // to generate the PDF
} catch (err) {
    console.log('errrr   on  page.pdf');
    console.log(err);
}

console.log('done');
await followUpEmail(user);
console.log('email sent');
await browser.close(); // for closing the browser

上面的代码在我的本地主机上运行良好。 (运行node.js 10)

但是,我现在已经将我的API部署到EC2实例,并且它一直运行到:

const browser = await puppeteer.launch({
    args: ['--no-sandbox', '--disable-setuid-sandbox'],
    headless: false
});

我得到了3.1 console.log,但是之后什么也没有。

我开始感觉到与我的Prod env有关。但是,在尝试了所有类型的不同方法之后,今天我有点迷路了。

现在,我真的希望这里的某个人遇到此问题,并且有答案或指导!

1 个答案:

答案 0 :(得分:0)

因此,事实证明NPM确实安装了Chrome版本,但是缺少很多依赖关系。

我使用以下方法检查了缺少的依赖项:

ldd chrome | grep not

手动安装了一些,但一些不在PKM上

然后,我创建了一个YUM配置来安装chrome,并进行了安装,但缺少相关性。