Node.js NodeJs/Express木偶演员启动本地视图

Node.js NodeJs/Express木偶演员启动本地视图,node.js,express,ejs,puppeteer,Node.js,Express,Ejs,Puppeteer,我有一个NodeJs/Express应用程序,我想在其中打开新的浏览器窗口,并在其中呈现本地ejs视图。我正试着用木偶演员来做这件事 const puppeteer = require('puppeteer'); router.post('/new_window', async (req, res) => { try { const browser = await puppeteer.launch({headless: false}); const page

我有一个NodeJs/Express应用程序,我想在其中打开新的浏览器窗口,并在其中呈现本地ejs视图。我正试着用木偶演员来做这件事

    const puppeteer = require('puppeteer');
router.post('/new_window', async (req, res) => {
  try {
     const browser = await puppeteer.launch({headless: false});
     const page = await browser.newPage();
     const pageContent = ejs.render('../views/mypage.ejs', {})  
     await page.setContent(pageContent)
     //await page.screenshot({path: 'example.png'});
     // await browser.close();
  } catch (err) {
     res.status(500)
     console.log(err)
     res.send(err.message)
  }
})
在浏览器中,我得到的不是页面布局,而是:

../views/mypage.ejs

提前感谢您的指导。

而不是:

await page.goto(...); // This code is acting like your browser's address bar
试一试

上面的代码将允许您在服务器上创建页面。
使用
page.setContent(..)
可以加载任何HTML字符串。

谢谢。我现在没有收到任何错误。浏览器打开了,但我得到的不是预期的页面布局,而是一个文本:../views/mypage.ejs。你知道我遗漏了什么吗?你需要把视图的内容转换成字符串。Puppeter不知道如何处理ejs文件,但它可以将HTML作为字符串处理。例如,这应该起作用:
page.setContent('Test')
。您需要获取mypage的内容,并将其传递到
page.setContents()
看到您更新了问题中的代码。您需要找到一个采用文件路径的
ejs.render
方法,比如
ejs.renderFile
得到了它。我现在得到了布局,但是看起来脚本和css的链接都不起作用。是的,这是“服务器端呈现”页面的开始。这需要做很多工作。另一种看待这个问题的方法是减少工作量。是制作另一个包含木偶师逻辑的快速应用程序。然后运行你原来的网站。然后在木偶演员应用程序中,您可以使用
page.goto('http://')
const pageContent = ejs.render('../views/mypage.ejs', {data to populate your .ejs page}) //This is sudo code. Check ejs docs on how to do this 
await page.setContent(pageContent)