import-js / eslint-plugin-import

ESLint plugin with rules that help validate proper imports.
MIT License
5.57k stars 1.57k forks source link

eslint(import/named) reports `not found` errors in 2.30.0 #3048

Open artaommahe opened 2 months ago

artaommahe commented 2 months ago

After upgrading from 2.29.1 to 2.30.0 we got some not found errors from import/named rule

import Select, { ClearIndicatorProps, GroupBase, OptionProps, Props, createFilter } from 'react-select';
Error:   2:18  error  ClearIndicatorProps not found in 'react-select'  import/named
Error:   2:39  error  GroupBase not found in 'react-select'            import/named
Error:   2:50  error  OptionProps not found in 'react-select'          import/named
Error:   2:63  error  Props not found in 'react-select'                import/named

import { DocumentNode } from 'graphql';
Error:   5:10  error  DocumentNode not found in 'graphql'  import/named

in both cases only imported interfaces are marked with error

ljharb commented 2 months ago

if they're types, is there a reason you can't use import type?

artaommahe commented 2 months ago

using import type helps, but it requires to do this manually. By default vscode add auto-imports without type. It's not a good idea to force developers manually check imports list and add type to random places (and frequently imports list is just collapsed by default).

ljharb commented 2 months ago

I agree, and we do need a lint rule for that (#2390).

In the meantime, let's figure this out. Can you confirm you're using the latest version of the TS resolver?

Pespiri commented 2 months ago

This "rule change" seems to be very inconsistent, as it seems to only trigger on external dependencies, at least in our project. Any internal types and interfaces imported as "import { SomeType } from "./someInterface"" are not affected. image

We would very much like to keep using our old importing style, and would appreciate if this, if not a bug, could be configured. This issue seems to happen after upgrading "eslint-module-utils" to version"2.9.0" or above. Our temporary solution has been to pin both "eslint-module-utils" and "eslint-plugin-import" to "2.8.2" and "2.29.0" respectively.

artaommahe commented 2 months ago

@ljharb what's ts resolver?) just in case "typescript": "5.5.4",

ljharb commented 2 months ago

@artaommahe eslint-import-resolver-typescript - it’s required to be able to lint typescript files properly with this plugin; see the readme.

artaommahe commented 2 months ago

@ljharb eslint-import-resolver-typescript@3.6.3

hiurylf commented 2 months ago

any updates?