Comments (1)
which
only finds executables that are in the PATH
. When running npm tests, the node_modules/.bin
folder is put in the PATH
, so that which can find them. Here's an example:
$ cat package.json
{
"name": "which-node-modules-bin",
"version": "1.0.0",
"scripts": {
"test": "node test.js",
"path": "echo $PATH"
},
"dependencies": {
"istanbul": "^0.4.5",
"which": "^1.2.12"
}
}
$ cat test.js
const which = require('which');
var resolved = which.sync('istanbul');
console.log(resolved);
$ npm test
> [email protected] test /Users/isaacs/dev/js/x/which-node-modules-bin
> node test.js
/Users/isaacs/dev/js/x/which-node-modules-bin/node_modules/.bin/istanbul
$ node test.js
/Users/isaacs/dev/js/x/which-node-modules-bin/node_modules/which/which.js:131
throw getNotFoundError(cmd)
^
Error: not found: istanbul
at getNotFoundError (/Users/isaacs/dev/js/x/which-node-modules-bin/node_modules/which/which.js:13:12)
at Function.whichSync [as sync] (/Users/isaacs/dev/js/x/which-node-modules-bin/node_modules/which/which.js:131:9)
at Object.<anonymous> (/Users/isaacs/dev/js/x/which-node-modules-bin/test.js:2:22)
at Module._compile (module.js:556:32)
at Object.Module._extensions..js (module.js:565:10)
at Module.load (module.js:473:32)
at tryModuleLoad (module.js:432:12)
at Function.Module._load (module.js:424:3)
at Module.runMain (module.js:590:10)
at run (bootstrap_node.js:394:7)
$ npm run path
> [email protected] path /Users/isaacs/dev/js/x/which-node-modules-bin
> echo $PATH
/Users/isaacs/dev/npm/npm/bin/node-gyp-bin:/Users/isaacs/dev/js/x/which-node-modules-bin/node_modules/.bin:/Users/isaacs/.basher/cellar/bin:/Users/isaacs/bin:/Users/isaacs/.rvm/bin:/Users/isaacs/.basher/bin:/Users/isaacs/bin:/usr/local/bin:/usr/local/sbin:/usr/local/include:/usr/bin:/usr/sbin:/usr/libexec:/bin:/sbin
$ echo $PATH
/Users/isaacs/.basher/cellar/bin:/Users/isaacs/bin:/Users/isaacs/.rvm/bin:/Users/isaacs/.basher/bin:/Users/isaacs/bin:/usr/local/bin:/usr/local/sbin:/usr/local/include:/usr/bin:/usr/sbin:/usr/libexec:/bin:/sbin
Note that the non-npm PATH
envronment variable does not lead to any istanbuls, so which can't find it.
Working as designed.
from node-which.
Related Issues (20)
- [BUG] `process.env.PATH` can be undefined on Windows
- 'node-which' is not recognized... HOT 1
- Antivirus/Malware report HOT 8
- Windows tests fail on linux because writing to process.env is implicitly converted to a string HOT 2
- which sync cannot work on windows HOT 1
- [Windows] File extension always in capital letters HOT 1
- Error: Cannot find module '../' HOT 3
- Resolving paths wrong in git bash on windows HOT 1
- Feature request: option to avoid throwing in whichSync HOT 1
- cannot install HOT 2
- Failed to parse past path entries on D: HOT 1
- Doesn't find executables in case-sensitive directory on Windows
- 160x slower than GNU which (~500ms vs. 3ms) HOT 3
- Support modern async/Promise usage
- Does not install under raspberry pi (arm32) HOT 4
- [BUG] Callback is part of promise chain HOT 2
- npm which function fails to get full path to an executable in macOS within an Electron app running in production mode but, works fine in development mode HOT 5
- [FEATURE] nothrow option for async which HOT 2
- [FEATURE] command -v is preferable (usually) to which HOT 3
- [BUG] Unable to invoke `which` from Windows 11's Terminal HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from node-which.