我按照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服务器运行正常。请告诉我这里错过的步骤是什么。
答案 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$