带有reactjs / express应用程序的Prerender.io无法识别Prerender令牌

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

我正在尝试对应用程序进行预渲染设置。我在客户端使用React,在服务器端进行表达。我在prerender IO上设置了一个帐户,并按照站点的建议安装了prerender-node中间件。这是我的服务器的外观:

const express = require("express");
const bodyParser = require("body-parser");
const app = express();
const SocketManager = require('./sockets/SocketManager')
const path = require('path');
const users = require("./routes/api/users");
const queries = require('./routes/api/queries');
const forumActions = require('./routes/api/forumActions');

// Routes
app.use("/api/users", users);
app.use("/api/queries", queries);
app.use("/api/forumActions", forumActions);

// Serve static assets if in production
if (process.env.NODE_ENV === 'production') {
  // Set static folder
  app.use(express.static('client/build'));

  app.get('/', (req, res) => {
    res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
  });
}

app.use(require('prerender-node').set('prerenderToken', 'xxxTOKEN_CODExxx'));

const port = process.env.PORT || 80;
const server = app.listen(port, () => console.log(`Server running on port ${port} !`));

const io = require('socket.io')(server);
io.on('connection', SocketManager);

在客户端,我正在使用react-helmet根据路线动态呈现元标记(标题,描述等)。理想情况下,我希望能够在社交媒体上分享帖子并显示元数据(据我所知,预渲染可以通过预渲染专门用于Web爬虫的页面来实现)。

我已经设置了prerender.io帐户并将URL添加到缓存的页面中,但是由于某种原因,我收到一条消息,提示“我们尚未看到带有您的Prerender令牌的请求。”。我托管在heroku上,并尝试使用heroku CLI添加令牌,但仍无法解决问题。

我是否缺少步骤,或者我没有正确设置此步骤?谢谢!

reactjs express prerender
1个回答
0
投票

看来您可能需要在文件中将prerender-node中间件上移,以便它在您的路由之后但在送回索引文件之前执行。

然后,您可以在浏览器中将用户代理更改为Googlebot并访问您的URL。如果中间件设置正确,您将在Prerender.io抓取统计信息中看到预渲染的响应和请求。

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