Javascript语法错误[Node JS]

时间:2014-08-15 21:05:36

标签: javascript node.js syntax syntax-error

我正在学习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 =' {"

3 个答案:

答案 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()+',
    };