
Research
2025 Report: Destructive Malware in Open Source Packages
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.
@nuxtjs/sentry
Advanced tools
Sentry module for Nuxt.js
The module enables error logging through Sentry.
public_key and private_key options, since the updated Sentry packages don't support these anymore.Nuxt.js v2.4.0+ is required, earlier versions are not supported
@nuxtjs/sentry dependency using yarn or npm to your project@nuxtjs/sentry to modules section of nuxt.config.js{
modules: [
'@nuxtjs/sentry',
],
sentry: {
dsn: '', // Enter your project's DSN here
config: {}, // Additional config
}
}
See Options for a list of available options
Enter your DSN in the Nuxt.js config file. Additional config settings can be found here.
In a Vue component, Sentry is available as this.$sentry, so we can call functions like
this.$sentry.captureException(new Error('example'))
where this is a Vue instance.
asyncDataWhile using Nuxt's asyncData method, there's $sentry object in the context:
async asyncData ({ params, $sentry }) {
try {
let { data } = await axios.get(`https://my-api/posts/${params.id}`)
return { title: data.title }
} catch (error) {
$sentry.captureException(error)
}
}
For the other special Nuxt lifecycle areas like plugins, middleware, and nuxtServerInit, the $sentry object is also accessible through the context object like so:
async nuxtServerInit({ commit }, { $sentry }) {
try {
let { data } = await axios.get(`https://my-api/timestamp`)
commit('setTimeStamp', data)
} catch (error) {
$sentry.captureException(error)
}
}
:warning: Please be aware that lazy loading could prevent some errors from being reported
Set lazy: true in your module options to load Sentry lazily on the client. This will prevent Sentry from being included in your main bundle but could result in some errors not being reported.
You can also pass a lazy config object in your module options (see options for more information).
$sentry (mocked)ObjectNormally $sentry would always refer to the @sentry/browser API. But if we lazy load Sentry this API wont be available until Sentry has loaded. If you don't want to worry about whether Sentry is loaded or not, a mocked Sentry API is injected into the Nuxt.js context that will execute all Sentry API calls once Sentry is loaded
See: injectMock and mockApiMethods options below
$sentryReadyFunctionThis method returns a Promise which will be resolved once Sentry has been loaded. You could use this instead of mocking $sentry.
Example usage:
this.$sentryReady().then((sentry) => sentry.captureMessage('Erreur!'))
// or
(await this.$sentryReady()).captureMessage('Erreur!')
$sentryLoadFunctionOnly injected when
injectLoadHook: true.
The callback you need to call to indicate that you are ready to load Sentry.
Example usage:
// layouts/default.vue
...
mounted() {
// This will only load sentry once an error was thrown
// To prevent a chicken & egg issue, make sure to also
// set injectMock: true if you use this so the error
// that triggered the load will also be captured
this.errorListener = () => {
this.$sentryLoad()
window.removeEventListener('error', errorListener)
}
window.addEventListener('error', errorListener)
},
destroyed() {
window.removeEventListener('error', this.errorListener)
}
Options can be passed using either environment variables or sentry section in nuxt.config.js.
Normally, setting required DSN information would be enough.
String
process.env.SENTRY_DSN || ''dsn is provided, Sentry will be initialised, but errors will not be logged. See #47 for more information about this.Boolean or Object
falsetrue then the default options will be used: {
injectMock: true,
injectLoadHook: false,
mockApiMethods: true,
chunkName: 'sentry',
webpackPrefetch: false,
webpackPreload: false
}
injectMock
Boolean
true$sentry API methods while Sentry has not yet loaded. Captured API method calls are executed once Sentry is loadedWhen
injectMock: truethis module will also add a window.onerror listener. If errors are captured before Sentry has loaded then these will be reported once Sentry has loaded using sentry.captureException
// pages/index.vue
beforeMount() {
// onNuxtReady is called _after_ the Nuxt.js app is fully mounted,
// so Sentry is not yet loaded when beforeMount is called
// But when you set injectMock: true this call will be captured
// and executed after Sentry has loaded
this.$sentry.captureMessage('Hello!')
},
injectLoadHook
Boolean
falsewindow.onNuxtReady is called. If you want to explicitly control when Sentry will be loaded you can set injectLoadHook: true. The module will inject a $sentryLoad method into the Nuxt.js context which you need to call once you are ready to load Sentry// layouts/default.vue
...
mounted() {
// Only load Sentry after initial page has fully loaded
// (this example should behave similar to using window.onNuxtReady though)
this.$nextTick(() => this.$sentryLoad())
}
mockApiMethods
Boolean or Array
true@sentry/browser should be mocked. You can use this to only mock methods you really use.injectMock: falsemockApiMethods: true then all available API methods will be mockedIf
injectMock: truethen captureException will always be mocked for use with the window.onerror listener
// nuxt.config.js
sentry: {
lazy: {
mockApiMethods: ['captureMessage']
}
}
// pages/index.vue
mounted() {
this.$sentry.captureMessage('This works!')
this.$sentry.captureEvent({
message: `
This will throw an error because
captureEvent doesn't exists on the mock
`
})
// To circumvent this problem you could use $sentryReady
(await this.$sentryReady()).captureEvent({
message: `
This will not throw an error because
captureEvent is only executed after
Sentry has been loaded
`
})
}
chunkName
String
'sentry'webpackPrefetch
Boolean
falsewebpackPreload
Boolean
falseBoolean
process.env.SENTRY_DISABLED || falsetrue.Boolean
process.env.SENTRY_DISABLE_CLIENT_SIDE || falseBoolean
process.env.SENTRY_DISABLE_SERVER_SIDE || falseBoolean
process.env.SENTRY_INITIALIZE || true$sentry object without initializing it, which will result in not reporting errors to Sentry when they happen but not crashing on calling the Sentry APIs.Boolean
true$sentry object in the consoledisabled, disableClientSide or disableServerSide is true)Boolean
process.env.SENTRY_PUBLISH_RELEASE || falseString
source-mappublishRelease = truehidden-source-map instead. For most people, that should be a better option but due to it being a breaking change, it won't be set as the default until next major releaseBoolean
process.env.SENTRY_AUTO_ATTACH_COMMITS || falsepublishRelease = trueString
process.env.SENTRY_RELEASE_REPO || ''publishRelease = true && attachCommits = trueBoolean
process.env.SENTRY_DISABLE_SERVER_RELEASE || falseBoolean
process.env.SENTRY_DISABLE_CLIENT_RELEASE || falseDictionary
{
Dedupe: {},
ExtraErrorData: {},
ReportingObserver: {},
RewriteFrames: {},
Vue: {attachProps: true, logErrors: this.options.dev}
}
Dictionary
{
Dedupe: {},
ExtraErrorData: {},
RewriteFrames: {},
Transaction: {}
}
Object
{ environment: this.options.dev ? 'development' : 'production' }Sentry.init(options). See Sentry documentation at https://docs.sentry.io/error-reporting/configuration/?platform=browsernpmconfig.dsn is automatically set based on the root dsn optionconfig.release is automatically inferred from the local repo unless specified manuallyObject
{ }Object
{ }Object
module.js since defaults include various options that also change dynamically based on other options.@sentry/webpack-plugin. See documentation at https://github.com/getsentry/sentry-webpack-plugin/blob/master/README.mdSupport for the sentry-webpack-plugin was introduced #a6cd8d3. This can be used to send releases to Sentry. Use the publishRelease option to enable this feature.
Note that releases are only submitted to Sentry when (options.publishRelease && !isDev) is true.
FAQs
Sentry module for Nuxt.js
The npm package @nuxtjs/sentry receives a total of 29,495 weekly downloads. As such, @nuxtjs/sentry popularity was classified as popular.
We found that @nuxtjs/sentry demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 11 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Destructive malware is rising across open source registries, using delays and kill switches to wipe code, break builds, and disrupt CI/CD.

Security News
Socket CTO Ahmad Nassri shares practical AI coding techniques, tools, and team workflows, plus what still feels noisy and why shipping remains human-led.

Research
/Security News
A five-month operation turned 27 npm packages into durable hosting for browser-run lures that mimic document-sharing portals and Microsoft sign-in, targeting 25 organizations across manufacturing, industrial automation, plastics, and healthcare for credential theft.