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

Path resolution in npm linked modules report module and not root app path. #33

Open
MarkGriffiths opened this issue Mar 4, 2019 · 5 comments

Comments

@MarkGriffiths
Copy link

I only noticed this today when changes in globby starting throwing path errors, so might have been there a while and I just didn't notice.

Under node v11, working in an app with the following pattern:

./project/app/
./project/shared-lib-1/
./project/shared-lib-2/

app-root-path is used in each shared lib. When these are installed with npm install, the libs correctly report the app's root path. In development, when the libs are linked with npm link, app-root-path reports the root path of the lib module, not the app.

@MarkGriffiths MarkGriffiths changed the title Path resolution in npm link-ed modules report module and not root app path. Path resolution in npm linked modules report module and not root app path. Mar 4, 2019
@stoicskyline
Copy link

The cause is using __dirname to resolve the root path.

If a module is linked while being used locally in an app, the __dirname in app-root-path may not overlap with the app's path.

It makes using npm link or yarn link quite a hassle. Is there an easy way to fix this, or perhaps app-root-path is simply not intended to be used in a NPM module?

@harryhorton
Copy link

Ran into this issue in an npm module I was developing. It worked great when actually npm/yarn installed, but not when linked. I ended up just creating a workaround option in my package for project root. However, it'd be great if there was a fallback if linked to somehow get the running project's root.

@MetaMmodern
Copy link

same issue here( Does not work when creating custom package for npm, it starts referring to the package project directory.

@FagnerMartinsBrack
Copy link

FagnerMartinsBrack commented Jun 18, 2021

I have to share an interesting bug that caused an outage and took me a long time to figure out and is directly related to this issue:

https://medium.com/@fagnerbrack/the-story-of-a-stupid-bug-that-is-impossible-to-reproduce-6863ac526172

Basically:

  1. NPM install on local files creates a symlink.
  2. Zipping removes the symlink.
  3. This can cause a bug with tools like app-root-path that uses _dirname which can only happen in prod and is impossible to reproduce locally.

Exactly like what @Jorgechen said.

@ByScripts
Copy link

Same problem with pnpm workspaces.

Temporarily, I solved the issue by defining a APP_ROOT_PATH environment var.

"scripts": {
  "dev": "APP_ROOT_PATH=`pwd` my-dev-command"
}

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

No branches or pull requests

6 participants