Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

223
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!