我试图让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给我们发送电子邮件。