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



我正在尝试用我的应用程序设置预呈现程序。我在客户端使用react,在服务器端使用express。我在prerender IO上建立了一个帐户,并按照网站的建议安装了prerender节点中间件。以下是我的服务器:

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头盔根据路线动态呈现元标签(标题、描述等(。理想情况下,我希望能够在社交媒体上分享帖子并显示元数据(据我所知,预发布者可以通过预发布专门针对网络爬虫的页面来实现这一点(。

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

是我遗漏了一个步骤,还是我没有正确设置?谢谢

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

然后,您可以将浏览器中的用户代理更改为Googlebot并访问您的URL。如果中间件设置正确,您会在Prerender.io Crawl Stats中看到一个预先提交的响应和一个请求。

最新更新