首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有reactjs/express应用程序的Prerender.io无法识别Prerender令牌

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

Stack Overflow用户
提问于 2020-03-31 01:38:33
回答 1查看 1.1K关注 0票数 0

我正在试着用我的应用程序设置prerender。我在客户端使用react,在服务器端使用express。我在prerender IO上设置了一个帐户,并按照站点的建议安装了prerender-node中间件。下面是我的服务器的样子:

代码语言:javascript
复制
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来动态呈现元标签(title、description等)。根据路线。理想情况下,我希望能够在社交媒体上分享帖子,并有元数据显示(据我所知,prerender可以通过预先渲染专门用于网络爬虫的页面来做到这一点)。

我已经建立了一个prerender.io账号,并将我的网址添加到缓存页面,但由于某种原因,我收到了一条消息,说“我们还没有看到带有你的Prerender令牌的请求。”我在heroku上托管,并尝试使用heroku CLI添加令牌,但仍然没有解决这个问题。

有没有我遗漏的步骤,或者我没有正确设置?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-31 10:07:21

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60936250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档