Я пытаюсь настроить рендеринг на стороне сервера для внешних страниц Javascript. Я использую Puppeteer для этой цели, и когда я предоставляю какой-либо внешний URL-адрес (не страницы localhost), Puppeteer извлекает только исходный код URL-адреса (который вы можете видеть в режиме просмотра исходного кода запрошенной страницы), не отображая всю DOM . Когда я пытаюсь использовать SSR для любого URL-адреса страницы Javascript локального хоста (страница, созданная тем же сервером node js на моем локальном хосте) - все работает нормально.
Сообщите, пожалуйста, что-то не хватает или мне нужно попробовать другой подход.
Мне удалось настроить кукольника со всеми зависимостями на моем локальном хосте, как показано ниже:
В настоящее время переменная '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);
});