Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Prerender.io抛出套接字错误_Angularjs_Sockets_Prerender - Fatal编程技术网

Angularjs Prerender.io抛出套接字错误

Angularjs Prerender.io抛出套接字错误,angularjs,sockets,prerender,Angularjs,Sockets,Prerender,我已经试着让prerender.io工作了一周了,我尝试了所有的方法,但都没有成功 我有一个节点服务器: 'use strict'; var path = require('path'); var _ = require('lodash'); var express = require('express'); var app = module.exports = express(); var prerender = require('prerender-node') .set('prer

我已经试着让prerender.io工作了一周了,我尝试了所有的方法,但都没有成功

我有一个节点服务器:

'use strict';
var path = require('path');
var _ = require('lodash');
var express = require('express');
var app = module.exports = express();

var prerender = require('prerender-node')
   .set('prerenderToken', 'My Key');

// These search engine bot do not adheres to google's _escaped_fragment_
// proposal, so we use user agent to detect them.
var moreCrawlerUserAgents = [
  'Slurp!',
  'MSNBot',
  'YoudaoBot',
  'JikeSpider',
  'Sosospider',
  '360Spider',
  'Sogou web spider',
  'Sogou inst spider',
  'baiduspider',
  'facebookexternalhit',
  'twitterbot',
  'rogerbot',
  'linkedinbot',
  'embedly',
  'quora link preview',
  'showyoubot',
  'outbrain',
  'pinterest',
  'developers.google.com/+/web/snippet',
  'slackbot',
  'vkShare',
  'W3C_Validator',
  'redditbot'
];
prerender.set('crawlerUserAgents', _.union(
  prerender.crawlerUserAgents, moreCrawlerUserAgents));
app.use(prerender);

var options = {
  maxAge: '60d',
   setHeaders: function(res, path, stat) {
    // Webfonts need to have CORS * set in order to work.
    if (path.match(/ttf|woff|woff2|eot|svg/ig)) {
      res.set('Access-Control-Allow-Origin', '*');
    }
  }
};

var dist_path = '/client/dist/';

app.use(express.static(path.join(__dirname, dist_path), options));

app.use(function(req, res) {
    res.sendFile(path.join(__dirname + dist_path + '/index.html'));
});
var port = process.env.PORT || 8000; 
app.listen(port, '0.0.0.0');
console.log("Listening on port " + port);
它可以正常工作,直到我将_escape_fragment_u=作为查询字符串参数传递,然后它抛出以下两个错误:

Error: getaddrinfo EMFILE
   at Object.exports._errnoException (util.js:746:11)
   at errnoException (dns.js:49:15)
   at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:94:26)

我不知道是什么问题,请帮忙


谢谢。

这些错误似乎指向了其他问题。EMFILE表示打开的文件太多,这很奇怪。您使用的是哪个版本的Node和NPM?感谢您的回复,Node v0.12.7和NPM 3.8.0在测试一些请求时是否会发生这种情况?或者你每秒发送很多请求?你能试着在本地升级节点,看看是否会遇到同样的问题吗?谢谢你,我的朋友,这是一个防火墙问题。我正在使用iptables,有没有办法让prerender和iptables一起工作?
Error: socket hang up
   at createHangUpError (_http_client.js:215:15)
   at Socket.socketOnEnd (_http_client.js:300:23)
   at Socket.emit (events.js:129:20)
   at _stream_readable.js:908:16
   at process._tickCallback (node.js:355:11)