ERROR SyntaxError: símbolo inesperado <en JSON en la posición 0

ERROR:

core.es5.js?0445:1084 ERROR SyntaxError: Unexpected token < in JSON at position 0 at JSON.parse ( 

SITUACIÓN:

Lo que estoy tratando de lograr es preseleccionar la elección que el usuario ya hizo previamente y evitar que vote dos veces.


CÓDIGO:

component.html

 
{{ poll.title }}

{{ poll.counter1 }} votes {{ poll.choice1 }}
{{ poll.counter2 }} votes {{ poll.choice2 }}

componente.ts

 votes: any; ngOnInit() { this.pollService.voted(this.poll, localStorage.getItem('userId')).subscribe( data => { this.votes = data.votes; console.log("NGONINIT this.votes: "+ this.votes); }, err => { console.log("NGONINIT ERROR: "+ err) }, () => { console.log("SUBSCRIBE COMPLETE this.votes: "+ this.votes); } ); } alreadyVotedFor(choice: number) { let result = ""; if (this.votes) { console.log("THIS.VOTES: "+this.votes); for (var i = 0; i < this.votes.length; i ++) { if (this.votes[i].poll == this.poll.pollId) { result = "disabled"; if (this.votes[i].choice == choice) { result = "selected"; } } } } return result; } 

Servicio

 voted(poll: Poll, userID: string) { return this.http.get('http://localhost:3000/'+userID) .map(response => response.json()); } 

rutas / usuario.js

 router.get('/:userid', function (req, res, next) { var userId = req.params.userid; User.findById(userID, function (err, user) { console.log("USER JSON? :"+user.json()); return res.send(user.json()); }); }); 

modelos / usuario

 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var mongooseUniqueValidator = require('mongoose-unique-validator'); var schema = new Schema({ firstName: {type: String, required: true}, lastName: {type: String, required: true}, password: {type: String, required: true}, email: {type: String, required: true, unique: true}, polls: [{type: Schema.Types.ObjectId, ref: 'Poll'}], votes: [{ poll: {type: Schema.Types.ObjectId, ref: 'Poll'}, choice: {type: Number}, }], }); schema.plugin(mongooseUniqueValidator); module.exports = mongoose.model('User', schema); 

Este error ocurre cuando el servidor responde con HTML en lugar de JSON, especialmente cuando no se encuentra una ruta y la respuesta es la página 404.

Es poco probable que la API tenga la única ruta que está montada en la raíz y disponible como http://localhost:3000/'+userID , solo porque no es posible que el servidor haga nada más en este caso.

Si la ruta está montada en algún camino, como

 app.use('/user', userRoutes); 

entonces las solicitudes deben realizarse en este camino también

 return this.http.get('http://localhost:3000/user/'+userID)