import-js/eslint-plugin-import

`no-unused-modules` erroneously flags `as default` exports

Open

#3,216 建立於 2025年10月17日

在 GitHub 查看
 (2 留言) (1 反應) (0 負責人)JavaScript (4,946 star) (1,540 fork)batch import
bughelp wanted

描述

Issue Description

The no-unused-modules rule incorrectly reports exports as unused when they use the export { X as default } syntax, even when the default export is properly imported and used by other modules.

This appears to be a bug in how the plugin resolves default exports that are created via the re-export syntax rather than inline default export declarations.

Minimal Reproduction

test-export.ts

export function testHandler() {
  return 'result';
}

export { testHandler as default };

test-import.ts

import handler from './test-export';
console.log(handler());

Current behavior: eslint-plugin-import reports export function testHandler in test-export.ts as unused.

Expected behavior: The rule should recognize that:

  1. testHandler is re-exported as the default export
  2. The default export is imported and used in test-import.ts
  3. Therefore, neither the named export nor the re-export as default should be flagged as unused

Configuration

{
  "import/no-unused-modules": ["error", { "unusedExports": true }]
}

Environment

  • eslint-plugin-import version: 2.31.0
  • Node version: 22.13.1
  • npm version: 10.9.2

貢獻者指南