- Many significant improvements to make crashes and restarts less likely.
- The most frequently used methods now sanity-check their arguments and invoke their callback, or as appropriate, if they are not valid. This replaces many full-process crashes with polite 500 errors.
- New, safer and easier alternatives to
self.route
:-
self.apiRoute
, which accepts anext
function that can be passed either an error, or(null, value)
, wherevalue
is an object to be sent to the browser with astatus: 'ok'
property automatically added — the convention for APIs in Apostrophe 2.x. In addition, errors reported tonext
are converted tostatus
properties and/or logged gracefully, including more complete information about where the error took place for easier debugging. Most core routes have been refactored to use it. This approach extends Express 4.0’s concept of error handlers with the ability to handle success as well. You can still useres
if you need to, for instance to issue a redirect. -
self.renderRoute
, which accepts anext
function that can be passed either an error that will be mapped to an appropriate HTTP status code, or(null, { template: 'templateName', data: { ... props for the template ... })
. The named template is rendered withself.render
, and any exceptions thrown are caught properly and logged as errors without a process crash — unlike what frequently happened before in such routes. -
self.htmlRoute
, similar to renderRoute but it does not render the markup for you; instead you pass markup as the second argument tonext()
. Useful if you are rendering by some means other thanself.render
.
-
- For template errors, a great deal of redundant error logging has been removed.
- Introduced
apos.utils.warnDevOnce
, refactored some existing warnings to use it, and added a call for CSRF errors to help developers understand what these mean. - New trace feature to help debug crashes in Apostrophe’s startup process. Try:
APOS_TRACE_STARTUP=1 node app
Thanks to Michelin for making this work possible via Apostrophe Enterprise Support. Your organization can also take advantage of the opportunity to fund development of the features you would like to see as well as receiving fast, personal support from Apostrophe’s core development team.