Meituan-Dianping/mpvue · error

passive and prevent can't be used together. Passive handler

Error message

passive and prevent can't be used together. Passive handler can't prevent default event.

What it means

Dev-only warning in addHandler during codegen: an event was declared with both .prevent and .passive modifiers. Passive listeners promise the browser they will never call preventDefault (enabling scroll optimization), so the generated preventDefault guard would be ignored/contradictory; the combination is always a mistake.

Source

Thrown at src/compiler/helpers.js:51

) {
  (el.directives || (el.directives = [])).push({ name, rawName, value, arg, modifiers })
}

export function addHandler (
  el: ASTElement,
  name: string,
  value: string,
  modifiers: ?ASTModifiers,
  important?: boolean,
  warn?: Function
) {
  // warn prevent and passive modifier
  /* istanbul ignore if */
  if (
    process.env.NODE_ENV !== 'production' && warn &&
    modifiers && modifiers.prevent && modifiers.passive
  ) {
    warn(
      'passive and prevent can\'t be used together. ' +
      'Passive handler can\'t prevent default event.'
    )
  }
  // check capture modifier
  if (modifiers && modifiers.capture) {
    delete modifiers.capture
    name = '!' + name // mark the event as captured
  }
  if (modifiers && modifiers.once) {
    delete modifiers.once
    name = '~' + name // mark the event as once
  }
  /* istanbul ignore if */
  if (modifiers && modifiers.passive) {
    delete modifiers.passive
    name = '&' + name // mark the event as passive
  }

View on GitHub (pinned to 6c5d78ee04)

Solutions

  1. Drop .passive if you actually need to preventDefault
  2. Drop .prevent if the handler truly never prevents default (e.g. scroll-optimized listeners)
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/compiler/helpers.js:51 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Meituan-Dianping/mpvue@6c5d78ee04 (2026-09-02). Data as JSON: /api/errors/50d9fdcd80a38051. Report an issue: GitHub.