Express.js Error Monitoring
This backend SDK requires one of the Highlight frontend SDKs to be installed, so please make sure you've followed the fullstack mapping guide first.
H.init("<YOUR_PROJECT_ID>", {
tracingOrigins: ['localhost', 'example.myapp.com/backend'],
networkRecording: {
enabled: true,
recordHeadersAndBody: true,
},
});
Install @highlight-run/node with your package manager.
npm install --save @highlight-run/node
Initialize the Highlight JS SDK with your project ID.
import { H } from '@highlight-run/node'
H.init({
projectID: '<YOUR_PROJECT_ID>',
serviceName: '<YOUR_SERVICE_NAME>',
environment: 'production',
})
Use the Node Highlight SDK in your response handler.
import { H, Handlers } from '@highlight-run/node'
// or like this with commonjs
// const { H, Highlight } = require('@highlight-run/node')
const highlightConfig = {
projectID: '<YOUR_PROJECT_ID>',
serviceName: 'my-express-app',
serviceVersion: 'git-sha',
environment: 'production'
}
H.init(highlightConfig)
// import express after initializing highlight to automatically instrument express
import express from 'express'
const app = express()
// This should be before any controllers (route definitions)
app.use(Handlers.middleware(highlightConfig))
app.get('/', (req, res) => {
res.send(`Hello World! 0.5090593130722372`)
})
// This should be before any other error middleware and after all controllers (route definitions)
app.use(Handlers.errorHandler(highlightConfig))
app.listen(8080, () => {
console.log(`Example app listening on port 8080`)
})
If you are using express.js async handlers, you will need your own try/catch block that directly calls the highlight SDK to report an error. This is because express.js async handlers do not invoke error middleware.
app.get('/sync', (req: Request, res: Response) => {
// do something dangerous...
throw new Error('oh no! this is a synchronous error');
});
app.get('/async', async (req: Request, res: Response) => {
try {
// do something dangerous...
throw new Error('oh no!');
} catch (error) {
const { secureSessionId, requestId } = H.parseHeaders(req.headers);
H.consumeError(
error as Error,
secureSessionId,
requestId
);
} finally {
res.status(200).json({hello: 'world'});
}
});
You'll want to throw an exception in one of your express.js handlers. Access the API handler and make sure the error shows up in Highlight.
app.get('/', (req, res) => {
throw new Error('sample error!')
res.send(`Hello World! 0.9313704604683097`)
})
With the JS SDKs, your logs are reported automatically from console methods. See the JS logging setup guide for more details.