Prerender.io с приложением reactjs/express не распознает токен Prerender

Я пытаюсь настроить пререндеринг с моим приложением. Я использую реакцию на стороне клиента и экспресс на стороне сервера. Я настроил учетную запись на предварительном вводе-выводе и установил промежуточное ПО 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);

На стороне клиента я использую реактивный шлем для динамического отображения метатегов (название, описание и т. д.) на основе маршрута. В идеале я хотел бы иметь возможность делиться сообщениями в социальных сетях и отображать метаданные (что, насколько я понимаю, может выполнять пререндеринг путем предварительного рендеринга страниц специально для поисковых роботов).

Я настроил учетную запись prerender.io и добавил свой URL-адрес на кешированные страницы, но по какой-то причине я получаю сообщение о том, что «мы еще не видели запрос с вашим токеном Prerender». Я размещаюсь на героку и пытался добавить токен с помощью интерфейса командной строки героку, который до сих пор не устранил проблему.

Есть ли шаг, который я пропустил, или я не настроил это правильно? Спасибо!


person Djaenike    schedule 30.03.2020    source источник


Ответы (1)


Похоже, вам может понадобиться переместить промежуточное программное обеспечение prerender-node выше в вашем файле, чтобы оно выполнялось сразу после ваших маршрутов, но до того, как индексный файл будет возвращен.

Затем вы можете изменить свой пользовательский агент в своем браузере на Googlebot и посетить свой URL. Если промежуточное ПО настроено правильно, вы увидите предварительно обработанный ответ и запрос в статистике обхода Prerender.io.

person Prerender.io    schedule 31.03.2020
comment
Спасибо - так что исправили мою первоначальную проблему. Я использую React Router на такой же стороне клиента, как этот <Route exact path="/userpost" component={UserPost} />, а затем добавляю ?q=POSTID в конец, чтобы маршрут выглядел как example.com/userpost?q=POSTID . Это отправит запрос на получение к серверной части для получения данных публикации, которые в конечном итоге обновят метатеги для этой страницы. Я могу просматривать их в браузере, но когда я пытаюсь поделиться ими в социальных сетях, по умолчанию используются метатеги index.html. Может ли пререндер помочь с этим? Спасибо за помощь!! - person Djaenike; 31.03.2020
comment
Можете ли вы отправить нам свой URL-адрес по адресу [email protected], чтобы мы могли взглянуть на фактический HTML-код? Когда мы видели это в прошлом, обычно это просто случай, когда канонический указатель указывает на URL-адрес домашней страницы или что-то подобное. Спасибо! - person Prerender.io; 31.03.2020
comment
Сделаю. Спасибо еще раз - person Djaenike; 31.03.2020