Кукловод, ExpressJS, React SSR - PullRequest
       11

Кукловод, ExpressJS, React SSR

0 голосов
/ 03 сентября 2018

Я пытаюсь добиться рендеринга на стороне сервера, иначе SSR для моего приложения реакции. Я создал приложение express с кукловодом и получил конечную точку со следующими фрагментами.

const port = 3003
app.get('*', async (req, res) => {
    try {
        const browser = await puppeteer.launch({headless: true});
        const page = await browser.newPage();
        const local_url = `http://localhost:${port}${req.originalUrl}`;
        await page.goto(local_url, {
            waitUntil: "networkidle0",
        });
        const html = await page.content()
        await browser.close()
        res.send(html);

    } catch(e) {
        console.log(e);
        res.send("ERROR");
    }
});
app.listen(process.env.PORT || port, () => {
    console.log(`Web run ${port}`);
});

Я просто не знаю, почему это не работает. Должен ли я запускать свое приложение реагирования (на 3000) отдельно и указывать туда переменную local_url? как

const local_url = `http://localhost:3000${req.originalUrl}`;

1 Ответ

0 голосов
/ 03 сентября 2018

Вы находитесь в цикле, где вы запрашиваете один и тот же URL снова и снова. Ваше приложение реакции находится в порту 3000, а это экспресс-приложение находится в порту 3003. Вы можете немного упростить чтение, если разделите их.

Вы должны запустить сервер реагирования на порту 3000 и указать на него, иначе он не будет знать, где искать.

const react_port = 3000;
const server_port = 3003;
const local_url = `http://localhost:${react_port}${req.originalUrl}`;

и вице-варса.

...