apache/superset · error · Error

Cannot convert node type: ${node.type}

Error message

Cannot convert node type: ${node.type}

What it means

Raised in ExecuteNowCommand.validate when security_manager.raise_for_editorship(self._model) throws SupersetSecurityException: the current user does not have permission to change/execute this report schedule. Manual execution is gated on editorship, not merely ownership or can_read.

Source

Thrown at superset-frontend/plugins/plugin-chart-echarts/src/utils/safeEChartOptionsParser.ts:359

        objResult[key] = value;
      });
      return objResult;
    }

    case 'ArrayExpression': {
      const arrNode = node as Node & { elements: (Node | null)[] };
      return arrNode.elements.map(elem => (elem ? astToValue(elem) : null));
    }

    case 'TemplateLiteral': {
      const templateNode = node as Node & {
        quasis: Array<Node & { value: { cooked: string } }>;
      };
      return templateNode.quasis.map(q => q.value.cooked).join('');
    }

    default:
      throw new Error(`Cannot convert node type: ${node.type}`);
  }
}

// =============================================================================
// Parse Result Types
// =============================================================================

interface ParseResult {
  success: boolean;
  data?: CustomEChartOptions;
}

// =============================================================================
// Public API
// =============================================================================

/**
 * Safely parses a JavaScript object literal string into an ECharts options object.

View on GitHub (pinned to f4587218dd)

Solutions

  1. Have the schedule owner (or an Admin) execute it, or grant the user edit permission on the schedule.
  2. Assign a role with can_update on ReportSchedule (e.g. via Settings > List Roles > ReportSchedule permissions).
  3. Transfer ownership of the schedule to the requesting user.
Defensive patterns

Strategy: validation

Validate before calling

from superset import security_manager
try:
    security_manager.raise_for_editorship(schedule)
    allowed = True
except SupersetSecurityException:
    allowed = False

Try / catch

try:
    ExecuteNowCommand(g.user, schedule_id).run()
except ReportScheduleForbiddenError:
    request_owner_or_admin_to_execute(schedule_id)

Prevention

When it happens

Trigger: A user without the 'can edit' permission on the report schedule (not creator, not Admin, lacks the relevant RBAC role) calls the Execute now endpoint or UI action. raise_for_editorship enforces owner-or-privileged edit rights before dispatching the Celery task.

Common situations: Shared schedules owned by another user; Gamma/Alpha roles trying to trigger reports they can view but not edit; role changes after the schedule was created; service accounts missing the can_update schedule permission.

Related errors


AI-assisted analysis of apache/superset@f4587218dd (2026-08-14). Data as JSON: /api/errors/0e9c4676dcdabbbc. Report an issue: GitHub.