Я пытаюсь настроить рендеринг на стороне сервера для внешних страниц Javascript.Я использую Puppeteer для этой цели, и когда я предоставляю какой-либо внешний URL-адрес (не страницы localhost), Puppeteer извлекает только исходный код URL-адреса (то, что вы можете видеть в режиме просмотра источника запрашиваемой страницы), не обрабатывая весь DOM,Когда я пытаюсь сделать SSR любым URL-адресом страницы Javascript на локальном хосте (страница, созданная тем же узлом js-сервером на моем локальном хосте) - все работает нормально.
Пожалуйста, сообщите, что я что-то упустил или мне нужно попробовать другой подход.
Мне удалось настроить puppeteer со всеми зависимостями на моем локальном хосте, как показано ниже:
В настоящее время переменная html возвращает только исходный код извлеченного URL, мне нужно получить полностью визуализированный DOMзапрошенного URL.
Код в server.js
var puppeteer = require('puppeteer');
async function ssr(url) {
console.info('rendering the page in ssr mode');
const browser = await puppeteer.launch({headless: true});
const page = await browser.newPage();
try {
await page.goto(url, {waitUntil: 'domcontentloaded'});
} catch (err) {
console.error(err);
throw new Error('page.goto/waitForSelector timed out.');
}
const html = await page.content();
await browser.close();
return {html};
}
module.exports = ssr;
Код в app.js
var err = require('http-errors');
var express = require('express');
var path = require('path');
var ssr = require('./ssr.js');
var app = express();
app.listen(3000, function(){ console.info('Server listening on port '); });
app.use('/index/', async(req, res) => {
const { html } = await ssr(`www.example.com`);
return res.send(html);
});