Booting FeathersJS asynchron.
Starting the application after all required tasks are done. For example you have to fill your memory storage with content before the application should start the http server.
npm install --save feathers-async-boot
-
create a module which should do you asynchron task. This module must return a Promise
-
register the async bootstrap module
-
configure the async bootstrap
-
Call
app.start()
. This will return a Promise.Example:
const app = feathers(); ... app.configure(boot); app.bootstrap([...modules]); app.start() .then(() => { app.listen(3040); }) .catch(err => { logger.error(`error during boostrap the application. ${err}`); });
There are different posibilities to start your application, even on when your bootstrap modules are rejected.
- with finally (using finally Node.js >= 10 is required)
const app = feathers();
app
.start()
.finally(() => {
app.listen(3040);
});
- or on rejection (using Node.js < 10)
const app = feathers();
app
.start()
.then(res => {
})
.catch(err => {
app.listen(3040);
});
The start will always resolve, as a result you get all possible errors
const app = feathers();
const ErrorHandling = requier('feathers-async-boot/lib/errorhandling');
app
.start(ErrorHandling.WARN)
.then(res => {
app.listen(3040);
});
The start will always resolve, result will be always true
const app = feathers();
const ErrorHandling = requier('feathers-async-boot/lib/errorhandling');
app
.start(ErrorHandling.WARN)
.then(res => {
app.listen(3040);
});
const feathers = require('@feathersjs/feathers');
const express = require('@feathersjs/express');
const boot = require('feathers-async-boot');
const asyncModuleToBoot = require('./async-module-to-boot');
const app = express(feathers());
app.configure(boot);
app.bootstrap([asyncModuleToBoot]);
app.bootstrap([asyncModuleToBoot]);
app.bootstrap([asyncModuleToBoot]);
app
.start()
.then(res => {
const server = app.listen(3040);
server.on('listening', () => {
console.log(`server started @ port ${server.address().port}`);
});
});
for more examples see the example directory.