Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript语法错误[Node JS]_Javascript_Node.js_Syntax_Syntax Error - Fatal编程技术网

Javascript语法错误[Node JS]

Javascript语法错误[Node JS],javascript,node.js,syntax,syntax-error,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"); }

我正在学习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=”{“

问题是您试图使用多行字符串,但在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,删除此处的单引号:

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);
删除引号

 var out = {"hour":'+date.getHours()+',
        "minute":'+date.getMinutes()+',
        "second":'+date.getSeconds()+',
    };

不,他正在尝试使用JSON,所以这样做是行不通的。他想要一个string@Markasoftware好的,将更新答案。前面还有一个类似的错误。另一个答案更好。当您可以返回json时,为什么要返回由字符串构建的json。这个答案实际上解释了错误的原因,而答案主要说明应该如何做从这个意义上说这是一个更好的答案。