Puppeteer,ExpressJS,React SSR

问题描述 投票:0回答:1

我正在尝试为我的反应应用程序实现服务器端渲染又名SSR。我用puppeteer创建了一个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}`;
reactjs express puppeteer serverside-rendering
1个回答
0
投票

你处于一个循环中,你一遍又一遍地请求相同的URL。您的反应应用程序位于端口3000,此快速应用程序位于端口3003中。如果您将它们分开,您可以使其易于阅读。

您必须在端口3000上运行react服务器并指向它,否则它将不知道在哪里浏览。

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

反之亦然。

© www.soinside.com 2019 - 2024. All rights reserved.