我正在学习nodeJS,我有这个语法错误,我不明白。 有人可以指出什么是语法错误,为什么我会得到它,以及如何绕过它?
var http = require('http');
var url = require('url');
var server = http.createServer(function(req,res) {
if (req.method == 'POST') {
return res.end("Only get requests");
}
var st = url.parse(req.url,true);
if (st.indexOf("parsetime") > -1) {
var time = st.substring(st.indexOf("iso"));
var date = new Date(time);
var out = '{
"hour":'+date.getHours()+',
"minute":'+date.getMinutes()+',
"second":'+date.getSeconds()+',
}';
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(out);
} else if (st.indexOf("unixtime") > -1) {
var time = st.substring(st.indexOf("iso"));
var date = new Date(time);
var out = "{
'unixtime':"+date.getTime()+"
}";
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(out);
} else {
return res.end("404");
}
});
server.listen(process.argv[2]);
语法错误在第11行:" var out =' {"
答案 0 :(得分:5)
从这里删除单引号:
var out = '{
"hour":'+date.getHours()+',
"minute":'+date.getMinutes()+',
"second":'+date.getSeconds()+',
}';
将上述内容更改为:
var out = {
"hour": date.getHours(),
"minute": date.getMinutes(),
"second": date.getSeconds(),
};
或者,如果我可能误认为字符串包含JSON对象,则需要使用以下方式声明out
并使用字符串化:
out = JSON.stringify(out);
答案 1 :(得分:2)
问题是你试图拥有一个多行字符串,这在JavaScript中是不可能的。这样做可能更容易:
var out = '{';
out+='"hour":'+date.getHours(),
out+='"minute":'+date.getMinutes(),
out+='"second":'+date.getSeconds()
out+='}';
或者,更简单,只需定义对象,然后使用JSON.stringify()
将其转换为字符串:
var outObj = {
hour:date.getHours(),
minute:date.getMinutes(),
second:date.getSeconds()
};
var obj=JSON.stringify(outObj);
这只是定义一个普通对象,然后将其转换为JSON
答案 2 :(得分:1)
删除引号
var out = {"hour":'+date.getHours()+',
"minute":'+date.getMinutes()+',
"second":'+date.getSeconds()+',
};