使用Google Puppeteer进行角度预呈现不起作用

时间:2018-03-23 10:17:56

标签: angularjs google-chrome puppeteer prerender

我想在我的Angular 1.4版本中使用Google Puppeteer进行预渲染(服务器端渲染)。

但我在http://www.browseo.net/

上看到了空白页

使用以下代码

(async() => {
const Browser = require('puppeteer');
    //const browser = new Browser();
    const browser = await Browser.launch({
        executablePath: '/usr/bin/google-chrome',
        args: ['--no-sandbox', '--disable-setuid-sandbox']
    });
    const page = await browser.newPage();

    await browser.close();
})();

1 个答案:

答案 0 :(得分:1)

我没有看到任何代码,你实际上将无头浏览器导航到任何地方,所以尝试:

// declare var document: any; // Typescript
var document; // JS
async function getPage(url) {
const Browser = require('puppeteer');
    const browser = await Browser.launch({
        executablePath: '/usr/bin/google-chrome',
        args: ['--no-sandbox', '--disable-setuid-sandbox']
    });
    const page = await browser.newPage();
    await page.goto(url);
    const html = page.evaluate(() => `<html>${document.head.innerHTML}${document.body.innerHTML}</html>`);
    await browser.close();
    return html;
}


getPage('http://www.browseo.net/').then(html => console.log(html));

如果您想知道document是什么以及它是如何工作的,那是因为page.evaluate在无头浏览器窗口的上下文中运行您传递给它的函数,所以这样你可以从那里引用全局变量。