节点redis访客计数器 - 抛出错误

时间:2015-10-05 12:20:07

标签: node.js redis

我按照https://gist.github.com/hubgit/399898#file-node-redis-visitor-counter-js尝试了代码。 我将代码保存在名为rediscounter.js的js文件中并执行为“node rediscounter.js”。它在控制台中显示输出为“服务器运行在127.0.0.1:6380”

但是当我尝试在浏览器中点击URL 127.0.0.1:6380时,它会抛出以下错误 crypto.js:240   this._binding.update(data,encoding);                 ^ TypeError:不是字符串或缓冲区     在Hash.update(crypto.js:240:17)     在服务器上。 (/home/veera/Radha/rediscounter.js:7:40)     在Server.emit(events.js:98:17)     在HTTPParser.parser.onIncoming(http.js:2109:12)     在HTTPParser.parserOnHeadersComplete [as onHeadersComplete](http.js:122:23)     在Socket.socket.ondata(http.js:1967:22)     在TCP.onread(net.js:528:27)

我应该在redis服务器上托管一些东西吗?我的redis服务器运行正常。请告诉我这里错过的步骤是什么。

1 个答案:

答案 0 :(得分:0)

Referer标头并不总是存在,因此您对hash.update的调用在此失败:

var urlhash = crypto.createHash("md5").update(request.headers.referer).digest("hex");

首先检查request.headers.referer是否存在。

示例:

zlatko@zlatko-desktop:~/tmp$ cat app.js 
var http = require('http');

http.createServer(function(req, res) {

  res.write(JSON.stringify(Object.keys(req.headers)) + '\n');
  res.end();
}).listen(4040);

zlatko@zlatko-desktop:~/tmp$ curl http://localhost:4040
["user-agent","host","accept"]
zlatko@zlatko-desktop:~/tmp$ curl -H "Referer: google.com" http://localhost:4040 
["user-agent","host","accept","referer"]
zlatko@zlatko-desktop:~/tmp$