import-js / eslint-plugin-import

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

`import/namespace` failures when importing chai@5 #2949

Open timbeadle opened 9 months ago

timbeadle commented 9 months ago

Upgrading from chai v4 to chai v5 yields the following eslint error:

cfpathcheck/test/cfpathcheck.spec.js
  1:24  error  Parse errors in imported module 'chai': Unexpected token ; (146:10)  import/namespace

The line of code in question is as follows:

import { expect } from 'chai';

For now I have added an ignore annotation to my code so that the linting passes, but it would be good to know why the import/namespace rule has started to fail with this new, ESM-only, version of chai.

Thank you 😸

ljharb commented 9 months ago

What’s your eslint config? A parse error is not expected.

timbeadle commented 9 months ago

What’s your eslint config? A parse error is not expected.

env:
  browser: true
  es6: true
extends:
  - xo
  - plugin:import/recommended
parserOptions:
  ecmaVersion: 2021
  sourceType: module
plugins:
  - import
  - redos
rules:
  arrow-parens: 0
  object-curly-spacing: 0
  import/no-unresolved: [2]
  redos/no-vulnerable: error
overrides:
- files:
  - "**/*.spec.js"
  rules:
    redos/no-vulnerable: 'off'
ljharb commented 9 months ago

(fwiw i would advise against using any "recommended" configs; use the airbnb config for the best settings for this plugin)

Is there any way you could make a repro repo for this? I don't see anything in https://unpkg.com/browse/chai@5.0.0/lib/chai/interface/expect.js that should fail to parse, but with a repro i can debug it locally.

timbeadle commented 9 months ago

(fwiw i would advise against using any "recommended" configs; use the airbnb config for the best settings for this plugin)

Interesting - thanks. Does the README need to be updated to advise this?

I will prepare a repro for this later.

ljharb commented 9 months ago

Yes, it probably should be, I'll get on that.

anselmbradford commented 8 months ago

I get this same error when attempting to import marked. Apparently from this line https://github.com/markedjs/marked/blob/d342aaa0f8a0f5987ffb8b5898f9e2e01ecab784/src/Tokenizer.ts#L72