Open mapsam opened 6 years ago
There is a fix in place for this at https://github.com/npm/npm/pull/20276!
Per comment from @nicolasnoble -
As a resolution, I would recommend probing for both
node_modules/node-gyp/bin/node-gyp.js
andnode_modules/npm-lifecycle/node_modules/node-gyp/bin/node-gyp.js
. Maybe even just probing thenode_modules/npm/bin/node-gyp-bin
directory instead, since this is whatnpm
uses internally.
Right, we probably don't want to just wait on npm to have an update for this. There will be people out there in production who have npm 5.8.0 installed, and they will fail to install node-pre-gyp enabled packages because of this issue without understanding why. It'd be a better user experience to have node-pre-gyp workarounding bad installations of npm.
Looks like npm is moving to fix this (https://github.com/npm/npm/pull/20276), so I'm hesitant to apply a workaround in node-pre-gyp since I presume it is easier to upgrade npm than it is to upgrade node-pre-gyp (given node-pre-gyp needs to be bundled).
This was fixed in https://github.com/npm/npm/commit/cfe562c5803db08a8d88957828a2cd1cc51a8dd5 and is part of the 6.0.0 release (with a possible backport planned), confirmed locally that the error is no longer present (double confirmed with no global installation of node-gyp).
Closing since it seems unlikely we'll add a fix to the node-gyp search function every time a bug is introduced via npm.
Hey! I just ran into this while using npm 5.8.0 and was able to fix this issue by doing:
npm install npm@latest -g
Thanks for making this issue @mapsam!
Right, node 8.11.2 is still pinned on npm 5.6.0 when installing it fresh, so it seems this issue is going to stay relevant for anything that installs nodejs with the npm associated with it; only node 10 is pinned on npm 6 right now.
This means that any CI that uses nvm for version switching will have this bug here. Right now for gRPC we are installing node-gyp globally in our CI to alleviate the problem, but it's fairly sad to have to do this.
node-pre-gyp fails in the node-gyp step with the following error (example using the vtquery module):
Stack trace
It appears this is an issue with the most recent npm release, version 5.8.0, which was released on 03/08/2018 and removed the node-gyp module unexpectedly. https://github.com/npm/npm/issues/20163. The following path is created in node-pre-gyp with the assumption that node-gyp exists in npm.
We'll continue to monitor over there to learn whether we need a fix here or if we can just update to a future version.
cc @springmeyer @millzpaugh