Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

225
Vistas
Token inesperado del controlador de errores de FeathersJS < Problema

Estoy trabajando en una aplicación Express con MongoDB e intento utilizar FeathersJS para todos mis servicios. Aquí estoy ejecutando una prueba para enviar un mensaje de error del servidor al cliente, pero tengo un problema con la respuesta del controlador de errores. Mis encabezados de requisitos tienen las cosas correctas de la application/json , por lo que asumí que el controlador de errores debería devolver el json válido.

Sé que no estoy usando la siguiente devolución de llamada en mi función, pero cuando intento hacerlo, aparece el mismo error, así que creo que tiene que ver con el controlador de errores. ¡Cualquier dirección aquí sería muy apreciada!

El primer registro de errores está en el servidor, lo cual es correcto.

 Bucket Services error >>>>> Bucket validation failed Possibly Unhandled Rejection: Bucket validation failed, Promise { <rejected> 'Bucket validation failed' } >>>>>> Error: Unexpected token < in JSON at position 0 at convert (/Users/jaruesink/Documents/Projects/Buckets/node_modules/feathers-rest/node_modules/feathers-errors/lib/index.js:365:79) at toError (/Users/jaruesink/Documents/Projects/Buckets/node_modules/feathers-rest/lib/client/base.js:24:37) at process._tickCallback (internal/process/next_tick.js:103:7)

mi función de creación dentro de la clase BucketService:

 create({ amount, isFund = false, name, type, userID: owner }, params, next) { const new_bucket = new Bucket({ name, amount, type, isFund, owner }); return new_bucket.save((error) => { console.log('error >>>>>', error.message); if (error) { return Promise.reject(error.message); } return Promise.resolve(new_bucket); }); }

mi archivo de enrutador:

 const feathers = require('feathers'); const errorHandler = require('feathers-errors/handler'); const rest = require('feathers-rest'); const router = feathers(); const LoginService = require('../services/login_service'); const UserService = require('../services/user_service'); const BucketService = require('../services/bucket_service'); // Enable REST services router.configure(rest()); router.use((req, res, next) => { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept'); next(); }); router.use('/login', new LoginService()); router.use('/user', new UserService()); router.use('/bucket', new BucketService()); // Set up error handling router.use(errorHandler()); module.exports = router;
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Lo descubrí, la clave era pasar correctamente a través de una función de devolución de llamada (siguiente) como el tercer parámetro para manejar los errores. FeathersJS maneja los rechazos de promesas por usted en caso de errores. Luego, en mi prueba, necesitaba convertir Feathers-Error a JSON antes de poder recibir el mensaje.

Cambié mi prueba a:

 it('can validate an incorrect bucket', (done) => { const invalid_bucket = { name: 'Invalid Bucket', }; bucket_service.create(invalid_bucket, {}, (error) => { error = error.toJSON(); assert(error.message.length > 0); done(); }); });

y mi función de creación para:

 create({ amount, isFund = false, name, type, userID: owner }, params, next) { const new_bucket = new Bucket({ name, amount, type, isFund, owner }); return new_bucket.save() .then(created_bucket => Promise.resolve(created_bucket)) .catch(next); }
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda