PrerenderIO无法使用我的MeteorApp

时间:2016-07-25 20:28:39

标签: javascript node.js meteor prerender serverside-rendering

我有一个让PrerenderIO在我的应用上工作的问题。 我正在运行meteor@1.3.5.1prerender-node,我已经在我的server/prerenderio.js中设置了此代码

Meteor.startup( function(){
const prerenderio = Npm.require('prerender-node');
const settings = Meteor.settings.PrerenderIO;

console.log(settings);

if (settings && settings.token && settings.host) {
    console.log('This is true');
    prerenderio.set('prerenderToken', settings.token);
    prerenderio.set('host', settings.host);
    prerenderio.set('protocol', 'http');
    WebApp.rawConnectHandlers.use(prerenderio);
   }
});

我的settings.json liiks就像这样

{
"PrerenderIO": {
    "token": "wi7DqaiBlaBlaBlaqTGmT",
    "host": "http://locallhost:3000/"
},
"public":{
    "ga": {
        "id": "UA-XXXXXXXXX-1"
    }   
}
}

当我在本地主机上启动服务器时,我会在日志中找到它

Prerender Token: wi7DqaiBlaBlaBlaqTGmT

所以,我在port:3033上运行PrerenderIO的本地服务器,当我运行http://localhost:3000/?_escaped_fragment_=时,它需要很长时间然后返回“找不到localhost”并在我的流星服务器日志上记录一些错误。

此外,当我将应用程序部署到我的主机,并访问我的prerender.io仪表板时,我仍然看到警告我没有安装我的预呈现令牌。

当我访问http://localhost:3033/http://localhost:3000时,我获得了没有图片的缓存页面

注意我已尝试过以下软件包dfischer:prerenderiodferber:prerender,但同样的事情。

1 个答案:

答案 0 :(得分:0)

在服务器的某个地方,您需要导入Meteor来获取私有设置,您需要从节点模块导入prerenderIO,从meteor / webapp导入WebApp。设置配置文件以进行预渲染,如下所示:

import prerenderIO from 'prerender-node';
import { Meteor } from 'meteor/meteor';
import { WebApp } from 'meteor/webapp';

Meteor.startup(() => {
    const settings = Meteor.settings.private.PrerenderIO;

    if (settings && settings.token && settings.host) {
        prerenderIO.set('prerenderToken', settings.token);
        prerenderIO.set('host', settings.host);
        prerenderIO.set('protocol', 'http');
        WebApp.rawConnectHandlers.use(prerenderIO);
    }
});

此外,在您的设置中,您不需要在域字符串中包含http,因为您通过调用协议方法在服务器中设置它。您的主机网址应该是:localhost:3000