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

Adapt relative paths resolution to tsconfig outDir depth #2706

Open
2 of 4 tasks
mgrisole opened this issue Nov 14, 2023 · 5 comments
Open
2 of 4 tasks

Adapt relative paths resolution to tsconfig outDir depth #2706

mgrisole opened this issue Nov 14, 2023 · 5 comments

Comments

@mgrisole
Copy link

Is there an existing issue for this?

  • I have searched the existing issues

Current behavior

This issue is almost a duplicate of #2114, I can't figure out why this should be address in Discord since it is a real bug and we are facing exactly the same issue in a pnpm workspace.

I can get it working by performing this manual change on dist:

  • Open apps/nest/dist/src/app.controller.js
  • Change require("../../../packages/math-helpers/dist/index").Me to require("../../../../packages/math-helpers/dist/index").Me

Possible related issues:
#1386
#501

Minimum reproduction code

https://github.com/bindermuehle/monorepo-issue

Steps to reproduce

  1. npm i
  2. npm run start:dev -w nest

Expected behavior

nest/swagger should correctly resolve the paths

Package version

7.1.10

NestJS version

9.0.0

Node.js version

20.9.0

In which operating systems have you tested?

  • macOS
  • Windows
  • Linux

Other

No response

@mgrisole
Copy link
Author

mgrisole commented Nov 14, 2023

Removing one of these two statements fixes the issue, but I fail to understand the whole context at the moment:

if (isAbsolute(importPath)) {
throw {};
}

typeReference = typeReference.replace(importPath, relativePath);

mgrisole added a commit to mgrisole/swagger that referenced this issue Nov 14, 2023
mgrisole added a commit to mgrisole/swagger that referenced this issue Nov 14, 2023
mgrisole added a commit to mgrisole/swagger that referenced this issue Nov 14, 2023
@mgrisole mgrisole changed the title Wrong path resolution in monorepo Adapt relative paths resolution to tsconfig outDir depth Nov 15, 2023
@aqeelat
Copy link

aqeelat commented Jul 22, 2024

@kamilmysliwiec We're also facing this issue.

We have a schemas package that's used in our frontends and backends.

Until this is fixed, our only options are:

  1. moving the entire package inside the nest src folder (bad idea)
  2. adding a path alias in tsconfig that points to the schemas package (also a bad idea)

@jkalberer
Copy link

This is a clear bug and I don't know why this PR was closed without any comment.

@aqeelat - can you give an example of the second option? (I'm trying to add paths to my tsconfig but can't figure it out)
It's definitely not ideal but it beats waiting for this bug to actually get addressed.

@jkalberer
Copy link

Ok -- I tried to hack on it a bit but I'm not super familiar with the typescript / AST APIs.

So it seems that this code is trying to resolve the path relative to the source file instead of the destination file.
In my case, the issue is that I have a mono-repo with packages and this code is resolving a relative path instead of using the node_module reference.


Anyways, I'm wondering why it's trying to resolve the paths anyways as there is already an import expression in the file for the node.

Is there any reason why we can't just clone the existing node?
Similar to what this is doing

I already time-boxed trying to come up with a solution (spent all yesterday) otherwise I'd open a PR going down that route but I think this is the right path forward and would allow us to get rid of a lot of code related to resolving the paths.

@aqeelat
Copy link

aqeelat commented Oct 1, 2024

@aqeelat - can you give an example of the second option? (I'm trying to add paths to my tsconfig but can't figure it out) It's definitely not ideal but it beats waiting for this bug to actually get addressed.

Sorry @jkalberer, I just saw your mention. We didn’t touch tsconfig. We cd’ed into the src folder and ran something like ln -s ../../otherLibrary/src otherLibrary (make sure to use relative paths). It’s been working fine for us with no negative consequences. Highly recommend it.

You might face issues when you have different linting/formatting rules.

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

Successfully merging a pull request may close this issue.

3 participants