Meituan-Dianping/mpvue · error
v-on without argument expects an Object value
Error message
v-on without argument expects an Object value
What it means
Raised by the bindObjectListeners render helper, which implements the object syntax v-on="value" (e.g. <div v-on="listeners">). The bound expression's value is truthy but isPlainObject(value) is false — a string, number, array or other non-object was passed where a map of event names to handlers is required. The helper then skips merging, so those listeners are silently dropped from the VNode.
Source
Thrown at src/core/instance/render-helpers/bind-object-listeners.js:8
/* @flow */
import { warn, extend, isPlainObject } from 'core/util/index'
export function bindObjectListeners (data: any, value: any): VNodeData {
if (value) {
if (!isPlainObject(value)) {
process.env.NODE_ENV !== 'production' && warn(
'v-on without argument expects an Object value',
this
)
} else {
const on = data.on = data.on ? extend({}, data.on) : {}
for (const key in value) {
const existing = on[key]
const ours = value[key]
on[key] = existing ? [].concat(ours, existing) : ours
}
}
}
return data
}
View on GitHub (pinned to 6c5d78ee04)
Solutions
- Pass an object mapping event names to handlers: v-on="{ click: onClick, input: onInput }"
- Ensure the bound variable/computed actually evaluates to a plain object at render time (check its initial value and any conditional logic)
- Use the normal v-on:event syntax if you only need a single handler
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at src/core/instance/render-helpers/bind-object-listeners.js:8 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/30a674537f73135e.
Report an issue: GitHub.