Node Express Conventions
nodule-express aims to define basic routes for Node Express gateways to focus on definiing
logic for actual API endpoints and leave basic error handling and express set up to this library
By importing nodule-express, the following bindings are made available.
middleware.basicAuthinjects a basic auth middlewaremiddleware.errorHandlerinjects a middleware to show unhandled errors in JSON format. This middleware should be use at the end of the middleware's chain inside the express app.
routes.expressreturns an Express instanceroutes.healthreturns a microcosm-compatible health check endpointroutes.notFoundreturn a 404-generating endpointroutes.unauthorizedreturn a 401-generating endpoint
install: Install dependencies and save to yarn.lock filelint: Runs airbnb flavored eslintbuild: Runs tests and transpiles ES6 -> ES5test: Runs teststest:watch: Runs tests watching files changes
Endpoints should throw errors when something fails. Within nodule-express, it is expected that:
- All errors define
codethat can be used by API consumers for error handling business logic - Most errors will borrow from HTTP error codes (because they have well-known, useful semantics)
- Error codes should be visible to API consumers via
error.extensions
Local development of nodule-express with other repos has a few common pitfalls related to the
usage of peer dependencies:
nodule-configis a peer-dependency because various libraries act as plugins to it and it needs a single import ofbottlejsto share plugin state
To work with nodule-express locally:
-
Run
yarn buildwithinnodule-expressto transpile the source. -
Change directories to your local repo that you want to test against
nodule-express. -
Run
yarn add /path/to/nodule-expressto copy the transpiled source into your local repo. Do NOT useyarn link -
After running
yarn add, remove (or move-of-the-way) thenodule_modulesfrom withinnodule_modules/@globality/nodule-express/