Javascript 为什么会出现SyntaxError:输入意外结束?

Javascript 为什么会出现SyntaxError:输入意外结束?,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,运行节点服务器时,我遇到以下错误 SyntaxError:输入意外结束 var http = require('http'); var socketio = require('socket.io'); if (typeof String.prototype.startsWith != 'function') { String.prototype.startsWith = function (str){ return this.slice(0, str.length) == str;

运行节点服务器时,我遇到以下错误

SyntaxError:输入意外结束

var http = require('http');
var socketio = require('socket.io');

if (typeof String.prototype.startsWith != 'function') {
  String.prototype.startsWith = function (str){
    return this.slice(0, str.length) == str;
  };
}

function log_me(msg){
  var ts = new Date(new Date().getTime() - (3600000*4));
  var tss = ts.toString();
  tss = tss.substring(0, tss.indexOf(' GMT'));
  console.log(tss + ": " + msg);
}

var app = http.createServer(function(req, res) {
    var postData = "";
    req.on('data', function(chunk) {
      postData += chunk; //Get the POST data
    });

    req.on('end', function() {
      if (typeof(postData) !== "undefined") {
        var message = JSON.parse(postData);  <-- Here is the issue line 25

        //Do something here
        //Todo...
      }
    });
    res.end();
}).listen(8080);  //Use a non-standard port so it doesn't override your Apache

var io = socketio.listen(app);
//var io = require('socket.io').listen(8080,'0.0.0.0');
io.set('log level', 2);
// io.set('transports', ['flashsocket', 'polling', 'websocket']);
io.set('origins', '*:*');
var http=require('http');
var socketio=require('socket.io');
if(typeof String.prototype.startsWith!=“函数”){
String.prototype.startsWith=函数(str){
返回此.slice(0,str.length)==str;
};
}
功能日志(msg){
var ts=新日期(new Date().getTime()-(3600000*4));
var tss=ts.toString();
tss=tss.substring(0,tss.indexOf('GMT'));
console.log(tss+“:”+msg);
}
var app=http.createServer(函数(req,res){
var postData=“”;
请求on('data',函数(块){
postData+=chunk;//获取POST数据
});
请求on('end',function(){
if(typeof(postData)!=“未定义”){

var message=JSON.parse(postData);您可以这样使用:

JSON.safeParse = function(data) {
    try {
        return JSON.parse(data);
    } catch (e) {
        return false;
    } 
}
将您的
JSON.parse
调用更改为
JSON.safeParse
,然后检查结果是否有效:

var message = JSON.safeParse(postData);
if (message) {
    // valid!
} else {
    // invalid
}

也许
postData
不是有效的JSON???
log_me(postData);
?这实际上只是保持现状:OP在提出问题之前已经不知道发生了什么,在使用此想法后也会如此。。。