microsoft / microsoft/TypeScript

@types dependency resolution can reference incorrect version

Open
#59,173 1 comment 0 reactions 1 assignee View on GitHub

@sheetalkamat is already working on this.

Since Jul 26, 2024.

Needs Investigation
Dominant language
Go
Stars
111k
Forks
14.4k
Avg merge
1d 19h
Merged PRs (30d)
117

Description

🔎 Search Terms

dependency dependencies types tree version

🕗 Version & Regression Information

This is the behavior in every version I tried, and I reviewed the FAQ for entries about Common "Bugs" That Aren't Bugs

⏯ Playground Link

https://stackblitz.com/edit/stackblitz-starters-qvn2zc

💻 Code

Consider the following dependency tree:

- @types/
  - send
    - mime@^1

- mime@^4 # This version of mime comes packaged with it's own types

- send
  - mime@^1

And therefore the following directory structure:

node_modules/
  @types/
    send/
    mime/
  mime/
  send/
    node_modules/
      mime/
🙁 Actual behavior

When the @types/send package attempts to reference mime it ends up importing mime(@^4) and not @types/mime, even though it's package.json dependency specifically references that version.

Therefore when you run npx tsc in this package it cannot compile.

🙂 Expected behavior

When @types/send was to reference mime, I'd expect it to reference @types/mime.

Additional information about the issue

I only stumbled across this problem as the mime@^4 package is ESM while @types/send was hoping to import a CommonJS version of mime@^1

Screenshot 2024-07-08 at 10 43 45

I have made a tiny stackblitz project here: https://stackblitz.com/edit/stackblitz-starters-qvn2zc
And I have also added the same sources to a git repo: https://github.com/johngeorgewright/typescript-dep-error

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.