siyuan-note/siyuan · error
method name and function required
Error message
method name and function required
What it means
Thrown by siyuan.rpc.bind when fewer than 2 arguments are passed. bind(name, fn, ...descriptions) registers an RPC method and requires at least a name and a handler function.
Source
Thrown at kernel/plugin/api_rpc.go:46
// injectRpc adds siyuan.rpc method for RPC method registration.
func injectRpc(p *KernelPlugin, rt *goja.Runtime, siyuan *goja.Object) (err error) {
defer func() {
if r := recover(); r != nil {
err = fmt.Errorf("injectRpc: %v", r)
}
}()
rpc := rt.NewObject()
lo.Must0(rpc.Set("bind", rt.ToValue(func(call goja.FunctionCall, rt *goja.Runtime) goja.Value {
promise, resolve, reject := rt.NewPromise()
var argErr error
var name string
var method goja.Callable
var descriptions []string
if len(call.Arguments) < 2 {
argErr = fmt.Errorf("method name and function required")
} else {
nameArg := call.Argument(0)
methodArg := call.Argument(1)
descArgs := call.Arguments[2:]
if goja.IsString(nameArg) {
name = nameArg.String()
} else {
argErr = fmt.Errorf("first argument must be method name string")
}
if argErr == nil {
if methodJs, ok := goja.AssertFunction(methodArg); ok {
method = methodJs
} else {
argErr = fmt.Errorf("second argument must be a function")
}
}
if argErr == nil {
descriptions = make([]string, len(descArgs))View on GitHub (pinned to 251596fc0d)
Solutions
- Pass both name and function: siyuan.rpc.bind('add', (params) => params.a + params.b).
Example fix
// before
siyuan.rpc.bind('add');
// after
siyuan.rpc.bind('add', (params) => params.a + params.b); Defensive patterns
Strategy: validation
Validate before calling
if (arguments.length < 2) throw new Error('name and handler required');
siyuan.rpc.bind(name, fn); Prevention
- Always pass name + handler.
- Use a registration helper that checks arity.
When it happens
Trigger: Calling bind('name') with no handler, or bind() with no args. len(call.Arguments) < 2 at api_rpc.go:45.
Common situations: Plugin registers an RPC method but forgets the handler, or passes the handler inside an options object by mistake.
Related errors
- first argument must be method name string
- second argument must be a function
- path must start with /
- topic and event required
- missing jsonrpc field
AI-assisted analysis of siyuan-note/siyuan@251596fc0d (2026-08-12).
Data as JSON: /api/errors/e8f2fb720edf36c2.
Report an issue: GitHub.