feathersjs错误处理程序意外令牌<问题



我正在与MongoDB一起使用Express应用程序,并试图将FeatherSjs用于我的所有服务。在这里,我正在进行测试,以尝试从服务器到客户端的错误消息,但是我对错误处理程序的响应有一个问题。我的REQ标题具有正确的application/json内容,因此我假设错误处理程序应将有效的JSON发送回。

我知道我没有在功能中使用下一个回调,但是当我尝试这样做时,它会产生相同的错误,因此我认为这与错误处理程序有关。这里的任何方向都将不胜感激!

第一个错误日志在服务器上,这是正确的。

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)

我的创建功能在桶中的类别中:

  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);
    });
  }

我的路由器文件:

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;

我弄清楚了,关键是正确地通过回调(下一个(函数作为处理错误的第三个参数。Feathersjs在错误上为您处理承诺拒绝。然后,在我的测试中,我需要在获得消息之前将羽毛上的错误转换为json。

我将测试更改为:

  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();
    });
  });

和我的创建功能至:

  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);
  }

相关内容

  • 没有找到相关文章

最新更新