Node.js Express.js не всегда отправляет действительный json

Вот экспресс-код

app.post('/v1/sessions' function(req,res){ res.send({id:1234});
});

По какой-то причине ответ json возвращается таким образом

OK{ id: 1234}

Почему там ОК?

РЕДАКТИРОВАТЬ

Итак, вот мой код. Я не вижу, куда он отправит OK.

var express = require('express');
var app = express();
app.enable('trust proxy');
app.use(express.bodyParser());
app.all('*', function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "X-Requested-With"); next();
});
app.post('/v1/sessions', function(req, res) { if(req.body.email == '[removed_email]' && req.body.password == 'testpass'){ res.send(200, JSON.stringify({token:{id:'longstring',email:'[removed_email]'}})); } else { res.send({code:403, error:"Invalid email or password"}); }
});
app.all('*', function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'HEAD, GET, POST, PUT, DELETE, OPTIONS'); res.header('Access-Control-Allow-Headers', 'Content-Type, X-Requested-With, Origin, Accept'); res.header('Access-Control-Allow-Credentials', 'true'); if (req.method.toLowerCase() === 'options') { res.send(200); } else { next(); }
});
app.listen(3000);
console.log('Listening on port 3000');
1 ответ

Можете ли вы заменить эту строку:

res.send(200, JSON.stringify({token:{id:'longstring',email:'[removed_email]'}}));

с этим и посмотрим, разрешит ли это это. Express делает для вас 200 и JSON.stringify, поэтому не переделывайте их.

res.send({token:{id:'longstring',email:'[removed_email]'}});

licensed under cc by-sa 3.0 with attribution.