https://github.com/chrisyip/node_path_demo
https://github.com/chrisyip/node_path_demo
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/chrisyip/node_path_demo
- Owner: chrisyip
- Created: 2015-04-21T06:05:21.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2015-04-21T06:28:43.000Z (about 11 years ago)
- Last Synced: 2025-02-17T06:41:31.659Z (over 1 year ago)
- Language: Shell
- Size: 117 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
This is a demo shows what node's `require` will act like if `$NODE_PATH` ends with a colon (':').
Try this in a unix-like system
```
git clone https://github.com/chrisyip/NODE_PATH_DEMO.git
cd NODE_PATH_DEMO
chmod +x run.sh
./run.sh
```
You'll see something like this:
```
Using node v1.8.1
Current NODE_PATH is '/usr/local/lib/node_modules'
Executing 'node foo/bar.js', you should seeing an error...
In foo/bar.js
module.js:336
throw err;
^
Error: Cannot find module 'index.js'
at Function.Module._resolveFilename (module.js:334:15)
at Function.Module._load (module.js:276:25)
at Module.require (module.js:363:17)
at require (module.js:382:17)
at Object. (/Users/Chris/Workspace/node/NODE_PATH_DEMO/foo/bar.js:2:13)
at Module._compile (module.js:428:26)
at Object.Module._extensions..js (module.js:446:10)
at Module.load (module.js:353:32)
at Function.Module._load (module.js:308:12)
at Function.Module.runMain (module.js:469:10)
Appeding a trailing colon to NODE_PATH
NODE_PATH now is '/usr/local/lib/node_modules:' <- notice the colon in the end
Executing 'node foo/bar.js'...
In foo/bar.js
index.js loaded
index.js: I should not be required
```
Funny, right? When requiring `index.js` in `foo/bar.js`, in normal situation, node will just throw an "module not found" exception.
But if `$NODE_PATH` ends with a colon, thing's going funny, node acts like search all the relative folders.
Does Anyone know why?