Error handling mixin for Feathers apps.
Feathers errors come with feathers by default. So typically you don't need to install it at all. However you can also use feathers-errors
with express directly as well. In that case you install the module with: npm install feathers-errors --save
var feathers = require('feathers');
var memory = require('feathers-memory');
var app = feathers()
.use('/users', memory)
.configure(feathers.errors());
var app = require('express');
var errors = require('feathers-errors');
var app = express()
.use(errors.fourOhFour)
.use(errors.handler);
Pro Tip: Just like express middleware, order matters. So your error handling should typically be configured last.
BadRequest
: 400NotAuthenticated
: 401PaymentError
: 402Forbidden
: 403NotFound
: 404MethodNotAllowed
: 405NotAcceptable
: 406Timeout
: 408Conflict
: 409Unprocessable
: 422GeneralError
: 500NotImplemented
: 501Unavailable
: 503
Pro Tip: Feathers service adapters (ie. mongodb, memory, etc.) already emit the appropriate errors for you. :-)
var feathers = require('feathers');
var app = feathers();
var userService = {
find: function(params, callback) {
// If you were to create an error yourself.
callback(new this.app.errors.NotFound('User does not exist'));
// You can also simply do something like this if you
// just want to fire back a simple 500 error with your
// custom message.
//
// callback('A generic server error');
},
setup: function(app){
this.app = app;
}
};
app.use('/users', userService)
.configure(feathers.errors());
We have conveniently created a basic 404 middleware already for you. If you want to override it, do this:
var feathers = require('feathers');
var app = feathers();
app.use('/users', userService)
.configure(feathers.errors({
fourOhFour: function(req, res, next){
// Handle your 404's some special way
}
}));
We already have an error handler that gets added to the middleware stack when you call feathers.errors()
. However, if you want customize how you handle errors you can do so like this:
var feathers = require('feathers');
var app = feathers();
app.use('/users', userService)
.configure(feathers.errors({
handler: function(req, res, next){
// Handle your errors the way you want
}
}));
See examples directory.
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.
0.2.0
- Adding support for mongoose errors Issue #5.
0.1.4
- Adding more error types
- Changing
missing
tofourOhFour
- Making library feathers core compatible
0.1.3
- Adding a default error page
0.1.2
- Minor bug fixes
0.1.1
- Exposing error types directly via
var types = require('feathers-errors').types;
0.1.0
- Initial release
Copyright (c) 2014 Eric Kryski Licensed under the MIT license.