Skip to content

Resolution allows extension-less import which is not aligned with package exports field #18300

@hi-ogawa

Description

@hi-ogawa

Describe the bug

Related: #18290

For a package with following files:

  • package.json
{
  "name": "test-dep",
  "private": true,
  "type": "module",
  "exports": {
    "./*": "./*"
  }
}
  • bad.js
export default {}

Vite resolves import "test-dep/bad" to /path-to/bad.js.

Though it's likely that such exports map is not common and probably users wrote it unintended, Vite should probably handle this strictly to avoid confusion with other tools.

Reproduction

https://stackblitz.com/github/hi-ogawa/reproductions/tree/main/vite-exports-resolve-auto-extension?file=README.md

Steps to reproduce

System Info

System:
    OS: Linux 5.0 undefined
    CPU: (8) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
    Memory: 0 Bytes / 0 Bytes
    Shell: 1.0 - /bin/jsh
  Binaries:
    Node: 18.20.3 - /usr/local/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 10.2.3 - /usr/local/bin/npm
    pnpm: 8.15.6 - /usr/local/bin/pnpm
  npmPackages:
    vite: latest => 5.4.8

Used Package Manager

pnpm

Logs

No response

Validations

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions