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

Prerender.io with reactjs/express application not recognizing Prerender token

我正在尝试使用我的应用程序设置预渲染。我在客户端使用 React,在服务器端使用 Express。我在 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 根据路由动态呈现元标记(标题、描述等)。理想情况下,我希望能够在社交媒体上分享帖子并显示元数据(据我所知,预呈现可以通过专门为网络爬虫预呈现页面来实现)。

我已经设置了一个 prerender.io 帐户并将我的 URL 添加到缓存页面,但由于某种原因,我收到一条消息说 "We haven't seen a request with your Prerender token yet."。我在 heroku 上托管,并尝试使用 heroku CLI 添加令牌,但仍未解决问题。

我是否遗漏了某个步骤,或者我没有正确设置它?谢谢!

看起来您可能需要将 prerender-node 中间件移到文件中更高的位置,以便它在您的路由之后但在返回索引文件之前执行。

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