How to catch and handle errors to report logs on server side
See original GitHub issueHi, I’m in the situation where we want to sent errors, both on server and client side, to Sentry tool.
Our app uses Express as a custom server. Basically we create an express app, apply some middlewares but delegate all the real job to the next.js handle:
const app = nextJs({ dev: process.env.NODE_ENV !== 'production' });
const handler = routes.getRequestHandler(app);
const expressApp = express();
...
...
expressApp.use(morgan('combined', { stream: logger.stream }));
expressApp.use(statsdMiddleware);
// Add security
expressApp.use(helmet());
// Sentry handler
expressApp.use(sentry.requestHandler());
// Load locale and translation messages
expressApp.use(i18n);
// Next.js handler
expressApp.use(handler);
// Sentry error handler.
// MUST be placed before any other express error handler !!!
expressApp.use(sentry.errorHandler());
With this approach next.js takes control over the rendering process and any error is catch by next.js and the only way I have to process it is overriding the _error.js
page file.
Within that _error.js
file I need a universal way to report errors to Sentry. Currently there are two libraries (raven
for node and raven-js
por javascript). The proble is I can’t import both of them because raven
works for SSR but fails when webpack builds the bundle, and also raven-js
fails due XMLHTTPRequest dependency too.
Is there a way I can be notified for next.js error on server side?
Issue Analytics
- State:
- Created 6 years ago
- Reactions:74
- Comments:97 (34 by maintainers)
This is something we’ve talked about internally. And we’ll be addressing soon.
Gotta love unortodox solutions