流星使prerender.io工作



我试图让Prerender在本地和产品上工作。我觉得我已经尝试了所有实现。使用时,我仍然没有静态HTML的静态HTML:?_escaped_fragment_ =在URL末尾。

这是我当前的流星实现:

Meteor.startup(() => {
  var prerenderio = Npm.require('prerender-node');
  var token;
  var serviceUrl;
  var protocol;
  var settings = Meteor.settings.PrerenderIO;
  token = process.env.PRERENDERIO_TOKEN || (settings && settings.token);
  protocol = process.env.PRERENDERIO_PROTOCOL || (settings && settings.protocol);
  // service url (support `prerenderServiceUrl` (for historical reasons) and `serviceUrl`)
  serviceUrl = settings && (settings.prerenderServiceUrl || settings.serviceUrl);
  serviceUrl = process.env.PRERENDERIO_SERVICE_URL || serviceUrl;
  if (token) {
    if (serviceUrl) prerenderio.set('prerenderServiceUrl', serviceUrl);
    prerenderio.set('prerenderToken', token);
    if (protocol) prerenderio.set('protocol', protocol);
    prerenderio.set('afterRender', function afterRender(error) {
      if (error) {
        console.log('prerenderio error', error); // eslint-disable-line no-console
        return;
      }
    });
    WebApp.rawConnectHandlers.use(prerenderio);
  }
});

我的设置文件设置为:

"PrerenderIO": {
  "serviceUrl": "http://localhost:3033/",
  "token": "mytoken"
},

对于产品而言相同,但没有ServiceUrl。我确实将Prerender Server升起,并且页面呈现。我还尝试了:<script> window.prerenderReady = false; </script>,然后在我的API内容通过路由器加载后将其设置为True(使用buttercms用于站点内容。

我当然还添加了:<meta name="fragment" content="!">到我们的站点头。

Prerender仍在说它没有看到我们的代币被使用。我认为我在这里可能会缺少一些明显的东西。...但不确定是什么。

似乎没有运行Prerender中间件。流星是否按添加的顺序将RawConnectHandlers留下?您可以尝试一下:

WebApp.rawConnectHandlers.use(function(req, res, next) {
    console.log('before prerender:', req.url)
});
WebApp.rawConnectHandlers.use(prerenderio);

,看看您是否看到该日志中的任何输出,以显示传入的URL的外观。如果要访问?_escaped_fragment_= URL,则应看到在该控制台上打印出来。Log语句。

,如果您希望我们帮助测试,请随时通过und@prerender.io给我们发送电子邮件。

最新更新