Angularjs Prerender.io抛出套接字错误
我已经试着让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
'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)