quasarframework/quasar · warning
Tried to remove listener for "${event}" event but there is n
Error message
Tried to remove listener for "${event}" event but there is no such listener attached. What it means
BexBridge.off(event, callback) was called for an event name that has no listeners registered at all. The bridge warns and returns without changes.
Source
Thrown at app-vite/exports/bex/private/bex-bridge.js:310
const target = (this.listeners[event] ||= [])
target.push({ type: 'once', callback })
this.log(`Added a one-time listener for event: "${event}".`)
}
/**
* @param {string} event
* @param {(message: Message) => void} callback
*/
off(event, callback) {
if (!event) {
this.warn('Tried to remove listeners but no event specified.')
return
}
const list = this.listeners[event]
if (list === void 0) {
this.warn(
`Tried to remove listener for "${event}" event but there is no such listener attached.`
)
return
}
if (callback === void 0) {
if (event.startsWith('@quasar:')) {
// ensure we don't remove internal listeners
this.listeners[event] = [list[0]]
} else {
delete this.listeners[event]
}
this.log(`Stopped listening for "${event}".`)
return
}
if (typeof callback !== 'function') {View on GitHub (pinned to 4841521b5f)
Solutions
- Confirm the event name exactly matches the one used in on()/once().
- Guard cleanup so off() runs only if a listener was registered.
- Track registration state to avoid removing twice.
Example fix
// before
bridge.on('app-opened', handler)
bridge.off('appOpened', handler) // mismatch
// after
const EVENT = 'app-opened'
bridge.on(EVENT, handler)
bridge.off(EVENT, handler) Defensive patterns
Strategy: validation
Validate before calling
if (registeredEvents.has(event)) {
bridge.off(event, handler)
registeredEvents.delete(event)
} Type guard
const canRemove = (event) => typeof event === 'string' && registeredEvents.has(event)
Prevention
- Track which listeners you registered and only off() those.
- Reuse one constant for on/off event names (avoid literal duplication).
- Guard against double cleanup in unmount hooks.
When it happens
Trigger: Removing a listener that was never added (typo in event name), or calling off() after the listener already fired (for once-type) or was already removed.
Common situations: Case/typo mismatch between on('Data') and off('data'); double cleanup (both a watcher and unmount hook call off); off() for an event registered only in the other side of the bridge.
Related errors
- Tried add listener but no event specified.
- Tried to remove listeners but no event specified.
- Error while triggering listener${plural} for event: "${messa
- Connection with "${port.name}" already exists. Disconnecting
- Tried add listener but no valid callback function specified.
AI-assisted analysis of quasarframework/quasar@4841521b5f (2026-08-30).
Data as JSON: /api/errors/cfb44ee37b2b910d.
Report an issue: GitHub.