siyuan-note/siyuan · error
topic and event required
Error message
topic and event required
What it means
Thrown by siyuan.event.emit when fewer than 2 arguments are passed. emit(topic, data) publishes to the in-process event bus and requires both a topic and a payload.
Source
Thrown at kernel/plugin/api_event.go:46
func injectEvent(p *KernelPlugin, rt *goja.Runtime, siyuan *goja.Object) (err error) {
defer func() {
if r := recover(); r != nil {
err = fmt.Errorf("injectEvent: %v", r)
}
}()
event := rt.NewObject()
lo.Must0(event.Set("handler", goja.Null()))
lo.Must0(event.Set("emit", rt.ToValue(func(call goja.FunctionCall, rt *goja.Runtime) goja.Value {
promise, resolve, reject := rt.NewPromise()
var argErr error
var topic string
var eventData any
if len(call.Arguments) < 2 {
argErr = fmt.Errorf("topic and event required")
} else {
topic = call.Argument(0).String()
if topic == "" {
argErr = fmt.Errorf("topic required")
} else {
eventData = call.Argument(1).Export()
}
}
runErr := p.worker.Run(func(rt *goja.Runtime) (result any, err error) {
if argErr != nil {
err = argErr
return
}
p.bus.Publish(topic, eventData)
return
}, func(rt *goja.Runtime, result any, err error) {
if lo.IsNil(err) {View on GitHub (pinned to 251596fc0d)
Solutions
- Pass both arguments: siyuan.event.emit('topic', data).
- If you have no payload, pass null explicitly: emit('topic', null).
Example fix
// before
siyuan.event.emit('my-event');
// after
siyuan.event.emit('my-event', { id: 1 }); Defensive patterns
Strategy: validation
Validate before calling
if (arguments.length < 2) throw new Error('topic and data required');
siyuan.event.emit(topic, data); Prevention
- Always pass a payload, even if null.
- Wrap emit in a helper that enforces arity.
When it happens
Trigger: Calling emit('topic') with no payload, or emit() with no args. len(call.Arguments) < 2 triggers the error at api_event.go:45.
Common situations: Plugin emits a signal forgetting the data argument, or passes undefined explicitly expecting it to be tolerated.
Related errors
- topic required
- path must start with /
- method name and function required
- Failed to update agent session permission
- Agent capability name and description are required
AI-assisted analysis of siyuan-note/siyuan@251596fc0d (2026-08-12).
Data as JSON: /api/errors/ae388d4be596cc04.
Report an issue: GitHub.