amark/gun · error · Error

Illegal reactive (${prop}: ${value})

Error message

Illegal reactive (${prop}: ${value})

What it means

This is the EDIDE showError helper: a generic wrapper, not a specific fault. The '${err}' is a template of the caller-supplied value. When an object without a .stack is passed, it throws Error(err) solely to synthesize a stack trace, then routes the error to the editor error panel, the production error printer, or console.error depending on environment.

Source

Thrown at lib/wave.js:436

}).call(MODSELF={}, edide, MODSELF);

edide.reactiveWithFilters = (function (edide, reactiveWithFilters) {
  return (initialVars = {}, filters = {}) => {
    var handler, id, key, react, revar, todoMap, unvar, val;
    id = edide.strRandom();
    handler = {
      get: (map, prop) => {
        var ref;
        if ((ref = edide.editorModule) != null ? ref.editor_inspector.inspectingNow : void 0) {
          console.log('IN inspector? Find out is it possible to end up here form inside setter');
          return edide.var.values.get(`${id}.${prop}`);
        }
        return edide.var(`${id}.${prop}`);
      },
      set: (map, prop, value) => {
        if ((filters[prop] != null) && !filters[prop](value)) {
          throw Error(`Illegal reactive (${prop}: ${value})`);
        }
        edide.var(`${id}.${prop}`, value);
        return true; // Proxy set must return true if set is successful; In the future use Reflect.set, which returns true automatically?
      }
    };
    revar = new Proxy((todoMap = new Map), handler); // NOTE: map is not used yet
    unvar = new Proxy(todoMap, {
      get: (map, prop) => {
        return edide.var.values.get(`${id}.${prop}`);
      },
      set: (map, prop, value) => {
        return edide.var.values.set(`${id}.${prop}`, value);
      }
    });
    for (key in initialVars) {
      val = initialVars[key];
      revar[key] = val;
    }

View on GitHub (pinned to 552227599d)

Solutions

  1. Inspect the underlying err value shown in the message — the real cause is in the caller that invoked showError
  2. Pass real Error objects (with .stack) to showError to skip the synthetic Error creation
  3. Check the editor error panel or prodErrorPrinter output where this wrapper forwards the error
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at lib/wave.js:436 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of amark/gun@552227599d (2026-09-02). Data as JSON: /api/errors/717c75b949c94430. Report an issue: GitHub.