oxc-project/oxc · error · OxcDiagnostic

Unexpected default export of anonymous class

Error message

Unexpected default export of anonymous class

What it means

Fires from import/no-anonymous-default-export when the default export is a class declaration with no name and allowAnonymousClass is false. Emitted from the ClassDeclaration match arm in run, labeling the export span.

Source

Thrown at crates/oxc_linter/src/rules/import/no_anonymous_default_export.rs:149

    fn run<'a>(&self, node: &AstNode<'a>, ctx: &LintContext<'a>) {
        let AstKind::ExportDefaultDeclaration(export_decl) = node.kind() else {
            return;
        };
        match &export_decl.declaration {
            ExportDefaultDeclarationKind::FunctionDeclaration(func_decl)
                if !self.allow_anonymous_function && func_decl.id.is_none() =>
            {
                ctx.diagnostic(no_anonymous_default_export_diagnostic(
                    export_decl.span,
                    "Unexpected default export of anonymous function",
                ));
            }
            ExportDefaultDeclarationKind::ClassDeclaration(class_decl)
                if !self.allow_anonymous_class && class_decl.id.is_none() =>
            {
                ctx.diagnostic(no_anonymous_default_export_diagnostic(
                    export_decl.span,
                    "Unexpected default export of anonymous class",
                ));
            }
            ExportDefaultDeclarationKind::ArrowFunctionExpression(_)
                if !self.allow_arrow_function =>
            {
                ctx.diagnostic(no_anonymous_default_export_diagnostic(
                    export_decl.span,
                    "Assign arrow function to a variable before exporting as module default",
                ));
            }
            ExportDefaultDeclarationKind::ObjectExpression(_) if !self.allow_object => {
                ctx.diagnostic(no_anonymous_default_export_diagnostic(
                    export_decl.span,
                    "Assign object to a variable before exporting as module default",
                ));
            }
            ExportDefaultDeclarationKind::CallExpression(_) if !self.allow_call_expression => {
                ctx.diagnostic(no_anonymous_default_export_diagnostic(

View on GitHub (pinned to e1e7af627c)

Solutions

  1. Name the class before default-exporting it: `export default class MyComponent {}`
  2. Enable `allowAnonymousClass` if anonymous classes are acceptable
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/oxc_linter/src/rules/import/no_anonymous_default_export.rs:149 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of oxc-project/oxc@e1e7af627c (2026-08-20). Data as JSON: /api/errors/000015630f7d1e99. Report an issue: GitHub.