Skip to content

[BUG] Import error with install-strategy=linked and namespaced packages in a workspace #6122

Open
@iansu

Description

Is there an existing issue for this?

  • I have searched the existing issues

This issue exists in the latest npm version

  • I am using the latest npm

Current Behavior

The namespace is being dropped when linking workspace packages which results in them not being found when attempting to import from them.

I've made a minimal repro here: https://github.com/iansu/npm-linked-install-repro

I have two packages in a workspace in this repo:

  • @iansu/package-a
  • @iansu/package-b

@iansu/package-b has a dependency on @iansu/package-a

When no install strategy is specified this is what the root node_modules directory looks like:

❯ tree node_modules
node_modules
└── @iansu
    ├── package-a -> ../../packages/package-a
    └── package-b -> ../../packages/package-b

3 directories, 0 files

In this case nothing is installed in package-b's node_modules directory

When install-strategy=linked is specific this is what the root node_modules directory looks like:

❯ tree node_modules
node_modules
├── package-a -> ../packages/package-a
└── package-b -> ../packages/package-b

2 directories, 0 files

Additionally this is what package-b's `node_modules directory looks like:

❯ tree packages/package-b/node_modules
packages/package-b/node_modules
└── package-a -> ../../package-a

1 directory, 0 files

When I try to import from @iansu/package-a I get an error because neither node_modules/@iansu/package-a or packages/package-b/node_modules/@iansu/package-a exist

Expected Behavior

The contents of node_modules should include the namespace and produce a tree similar to the one produced when not using install-strategy=linked

Steps To Reproduce

  1. Clone the repro
  2. Run npm install --install-strategy=linked
  3. cd packages/package-b
  4. node index.js
  5. Observe import error

If you delete node_modules and run npm install again without install-strategy=linked you will not get the import error

Environment

  • npm: 9.4.1
  • Node.js: 16.15.0
  • OS Name: macOS
  • System Model Name: M2 MacBook Air
  • npm config:
; "user" config from /Users/iansu/.npmrc

//registry.npmjs.org/:_authToken = (protected)
init-author-email = "ian@<domain>"
init-author-name = "Ian Sutherland"
init-license = "MIT"
init-version = "0.0.0"

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions