运行这段代码给出了这个错误,试图从一个小时后开始查找,但是失败了。
var http = require('http');
var url = require('url');
var fs = require('fs');
var port = 3010;
http.createServer(function(req, res){
var query = url.parse(req.url,true).query;
console.log(query);
var file = query.f + query.t;
//var file = "eurusd_m1.json";
console.log(file);
var eurusd;
fs.readFile('data/' + file + '_m1.json', function(err,data){
if (err){
console.log(err);
}
eurusd = JSON.parse(data);
console.log(eurusd);
});
res.writeHead(200,{'content-type':'text/plain'});
res.end("helllo owrld");
}).listen(port);
console.log("server running at port 3010..");它给了我以下的结果:
server running at port 3010..
{ f: 'eur', t: 'usd' }
eurusd
{}
NaN
{ [Error: ENOENT, open 'C:\Users\Administrator\Documents\zeromq\data\NaN_m1.json']
errno: 34,
code: 'ENOENT',
path: 'C:\\Users\\Administrator\\Documents\\zeromq\\data\\NaN_m1.json' }
undefined:1
undefined
^
SyntaxError: Unexpected token u
at Object.parse (native)
at C:\Users\Administrator\Documents\zeromq\dataserver.js:17:17
at fs.js:207:20
at Object.oncomplete (fs.js:107:15)发布于 2013-09-15 22:21:16
您看到的是客户对favicon.ico的请求。这里有两个请求正在执行(因此,您可以看到日志两次)。浏览器请求页面和表示书签时看到的小图标的favicon.ico文件,以及地址栏左侧:)
您的问题在var file = query.f + query.t;中--当您访问页面时,这是有意义的,但是当您的浏览器隐式地访问favicon.ico时,就没有意义了。
您只是在console.log错误,而不是从它返回,这意味着您对一个未定义的值-抛出语法错误的规范(只要尝试打开控制台并在浏览器中键入JSON.parse(window.x) )。
(当ENOENT试图打开"NaN_m1.json"时,您可以从ENOENT看到这一点)
您可以在调用url.parse之前将其添加到服务器中,但是如果要使其更大,那么正确的路由可能更好:
if (req.url === '/favicon.ico') {
r.writeHead(200, {'Content-Type': 'image/x-icon'} );
return r.end();
}https://stackoverflow.com/questions/18818037
复制相似问题