Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Typescript support for moduleResolution node16 #96

Open
k2snowman69 opened this issue Aug 6, 2023 · 4 comments
Open

Typescript support for moduleResolution node16 #96

k2snowman69 opened this issue Aug 6, 2023 · 4 comments

Comments

@k2snowman69
Copy link

As a typescript user when setting moduleResolution to Node16 or NodeNext, I currently get typescript failures from the ignore package.

Due to typescript-eslint@6 upgrading to only support Node16+, I'm unable to support both simultaneously.

For more information on possible fixes see:
https://arethetypeswrong.github.io/?p=ignore

@kaelzhang
Copy link
Owner

Could you provide the use cases or concrete code slices?

Is it only a linting warning about potential issues or are there any real failures?

Here is the test case only for ts definition: https://github.com/kaelzhang/node-ignore/blob/master/test/ts/simple.ts

@k2snowman69
Copy link
Author

Sure and it's a real typescript typing/intellisense failure, not just linting. I ran into this in my own project here:
https://github.com/snowcoders/sortier/pull/2226/files#diff-55dee8ec3daf30391537fdc45f8c2639cca5d3e63faf83671ee7505eeb8fed03R10

I think with typescript + node16 resolution, when you share a single types file with cjs and esm, it seems to assume cjs. In this code, I had to @ts-expect-error because ignore here was the import module and typescript wanted me to use ignore.default(). Obviously that doesn't match your build output so I had to ignore the error to be able to get the program to continue to run.

If you need a repo environment, that project should work, just removed the @ts-expect-error and you should see the same bug. If that doesn't work for you, creating a narrowed reproduction repo wouldn't be difficult, it will just take a few days since the work week is starting.

@kaelzhang
Copy link
Owner

kaelzhang commented Aug 10, 2023

It is really weird that tsc treats packages with/without type: module differently.

  • tsc ./src/lib/is-ignored/index.ts --moduleResolution Node16 failed with type:module in package.json
  • tsc ./src/lib/is-ignored/index.ts --moduleResolution Node16 succeeded with no type:module in package.json
  • tsc ./src/lib/is-ignored/index.ts succeeded

@guoyunhe
Copy link

@kaelzhang I think the only way to fix this is to add a real esm output:

{
  "name": "ignore",
  "version": "5.3.0",
  "main": "index.js",
  "module": "index.mjs",
  "types": "index.d.ts"
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants