【问题标题】:Settings prerender.io for meteor.js on localhost为 localhost 上的流星.js 设置 prerender.io
【发布时间】:2016-11-24 17:48:34
【问题描述】:

1) 我已经安装并运行了应用程序meteor.jshttps://github.com/meteor/simple-todos-react

2) 我在应用程序目录附近安装了prerender 服务器:

git clone https://github.com/prerender/prerender.git
cd prerender
npm install

并设置端口:

export PORT=3050

结束运行

node server.js

3) 我已经安装了模块prerender-node:

meteor npm install prerender-node --save

设置环境变量:

export PRERENDER_SERVICE_URL="http://localhost:3050/"

4) 我在./server/main.js写道:

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

Meteor.startup(() => {
  prerenderIO.set('host', 'localhost');
  prerenderIO.set('protocol', 'http');
  prerenderIO.set('port', '3000');
  WebApp.connectHandlers.use(prerenderIO);
});

但是当我转到链接view-source:http://localhost:3000/?_escaped_fragment_= 时,我看不到渲染的html

我看到一个错误:

GET http://localhost:3000/?_escaped_fragment_= 504 

我做错了什么?

【问题讨论】:

  • 您在预渲染服务器日志中看到任何控制台输出吗?

标签: javascript node.js meteor web-crawler prerender


【解决方案1】:

获得的配置选项:

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

    Meteor.startup(() => {
      prerenderio.set('host', 'localhost:3000');
      prerenderio.set('protocol', 'http');
      prerenderio.set('forwardHeaders', true);
      prerenderio.set('afterRender', function afterRender(error) {
          if (error) {
             console.log('prerenderio error', error);
             return;
          }
     });
     WebApp.rawConnectHandlers.use(prerenderio); 
   });

【讨论】:

    【解决方案2】:
    import prerenderio from 'prerender-node';
    Meteor.startup(() => {
    const settings = Meteor.settings.PrerenderIO;
    if (settings && settings.token && settings.protocol) {
        prerenderio.set('prerenderToken', settings.token);
        prerenderio.set('protocol', settings.protocol);
        prerenderio.set('forwardHeaders', true);
        prerenderio.set('afterRender', function afterRender(error) {
            if (error) {
                console.log('prerenderio error', error); // eslint-disable-line no-console
                return;
            }
        });
        WebApp.rawConnectHandlers.use(prerenderio);
    }
    });
    

    settings.json

    {
     "PrerenderIO": {
        "token": "xxxxxxxxxxxxxx",
        "protocol": "http" //https
    },
    }
    

    【讨论】:

    • 我不需要来自prerender.io 的令牌,因为我在本地展开服务器以及从哪里获取本地服务器的令牌?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-20
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 2017-01-04
    • 2016-02-09
    • 1970-01-01
    相关资源
    最近更新 更多