2017-12-23 13 views
2

私は、puppeteerを使ってangularjsで書かれたウェブページを事前レンダリングしようとしています。 私のアプリケーションのスタックはMEAN(Mongo-Express-Angular-NodeJs)です。次のようにpuppeteerとangularjs htmlレンダリングの問題

レンダリングロジックは次のとおりです。

var args = [ 
    '--disable-gpu', 
    '--disable-setuid-sandbox', 
    '--no-sandbox', 
    ]; 


var getPageContent = async function getPageContent(request) 
{ 
    var url = getUrl(request); 
    var browser = await puppeteer.launch({headless: true, handleSIGINT: false, args: args}); 
    var page = await browser.newPage(); 
    await page.goto(url, {waitUntil: 'networkidle2'}); 
    var html = await page.content(); 
    await browser.close(); 
    return html; 
}; 

すべてが正常に動作し、私は、ページのHTMLを取得しません。しかし、私は角度の方法でhtmlを取得します。下記のように:

<title> {{meta.title}} </title> 
<meta property="og:title" content="{{meta.title}}"> 
<meta property="og:description" content="{{meta.description}}"> 
<meta property="og:image" content="{{meta.imageSrc}}"> 

私が欲しいのは、{{}}ではなくページの実際の内容です。以下のような 何か:私はこれがpage.contentに問題があるかどうか疑問

<title> My Page </title> 
<meta property="og:title" content="My Page"> 
<meta property="og:description" content="Page about saving humanity"> 
<meta property="og:image" content="url_to_image"> 

()?または、ページの実際の生のhtmlを返す他の人形APIがありますか?

答えて

0
module.exports.getmessages = async (page, selector, message) => { 
const messages = []; 
const bodyHandle = await page.$$(selector); 
console.log(" table of messages length : ", bodyHandle.length); 
const length = bodyHandle.length; 
console.log(message + "switch ordre after load :\n") 
for (let i = 0; i < length; i++) { 
    const element = bodyHandle[i]; 
    const content = await page.evaluate(body => body.textContent, element); 
    console.log("message" + i + ": ", content + "\n"); 
    messages[i] = content; 
} 
return messages;} 

こんにちは、私はVUEのjsをまねたコードを使用して、私はVUEによって作成された正しい値を持つHTMLコードを取得し、私はあなたのためにそのコードの仕事を期待;)