Skip to content

project reference resolution fails when workspace is opened through a symlinked root path #63819

Description

@Zzzen

Summary

When a workspace is opened through a symlinked root path, tsgo language service can report TS2307 for packages that should resolve through project references.

In our case:

  • Opening the repo via /data00/home/my-username/my-project works
  • Opening the same repo via /home/my-username/my-project fails
  • /home/my-username is a symlink to /data00/home/my-username

The failing diagnostic is:

Cannot find module '@my-project/base' or its corresponding type declarations.ts(2307)

Environment

  • tsgo language service
  • Linux
  • Workspace root opened through a symlink
  • Example symlink:
/home/my-username -> /data00/home/my-username

Actual behavior

When opening a file through the symlinked workspace path, module resolution fails for a package that should resolve via project references.

Example:

  • Works: /data00/home/my-username/my-project/...
  • Fails: /home/my-username/my-project/...

Expected behavior

The same workspace should resolve project-reference-backed packages identically whether it is opened through:

  • the real path
  • a symlinked root path

Minimal reproduction

A minimal regression test was added that reproduces the issue with:

  • a workspace root exposed through a symlink
  • an app project
  • a referenced package project
  • a node_modules symlink from the app to the package
  • a package types entry pointing at a generated .d.ts output that does not exist on disk

Behavior before the fix:

  • opening through realpath resolves successfully
  • opening through workspace-root symlink fails with TS2307

Activity

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

Metadata

Metadata

Labels

Needs InvestigationThis issue needs a team member to investigate its status.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions