diff --git a/doc/api/modules.markdown b/doc/api/modules.markdown index 5008f5041c..13e7949b8d 100644 --- a/doc/api/modules.markdown +++ b/doc/api/modules.markdown @@ -68,8 +68,7 @@ parent directory of the current module, and adds `/node_modules`, and attempts to load the module from that location. If it is not found there, then it moves to the parent directory, and so -on, until either the module is found, or the root of the tree is -reached. +on, until the root of the tree is reached. For example, if the file at `'/home/ry/projects/foo.js'` called `require('bar.js')`, then node would look in the following locations, in @@ -83,28 +82,6 @@ this order: This allows programs to localize their dependencies, so that they do not clash. -#### Optimizations to the `node_modules` Lookup Process - -When there are many levels of nested dependencies, it is possible for -these file trees to get fairly long. The following optimizations are thus -made to the process. - -First, `/node_modules` is never appended to a folder already ending in -`/node_modules`. - -Second, if the file calling `require()` is already inside a `node_modules` -hierarchy, then the top-most `node_modules` folder is treated as the -root of the search tree. - -For example, if the file at -`'/home/ry/projects/foo/node_modules/bar/node_modules/baz/quux.js'` -called `require('asdf.js')`, then node would search the following -locations: - -* `/home/ry/projects/foo/node_modules/bar/node_modules/baz/node_modules/asdf.js` -* `/home/ry/projects/foo/node_modules/bar/node_modules/asdf.js` -* `/home/ry/projects/foo/node_modules/asdf.js` - ### Folders as Modules It is convenient to organize programs and libraries into self-contained diff --git a/lib/module.js b/lib/module.js index fa147d62e8..11c5189223 100644 --- a/lib/module.js +++ b/lib/module.js @@ -199,12 +199,7 @@ Module._nodeModulePaths = function(from) { var paths = []; var parts = from.split(splitRe); - var root = parts.indexOf('node_modules') - 1; - if (root < 0) root = 0; - - var tip = parts.length - 1; - - for (var tip = parts.length - 1; tip >= root; tip --) { + for (var tip = parts.length - 1; tip >= 0; tip --) { // don't search in .../node_modules/node_modules if (parts[tip] === 'node_modules') continue; var dir = parts.slice(0, tip + 1).concat('node_modules').join(joiner); diff --git a/test/fixtures/node_modules/baz/index.js b/test/fixtures/node_modules/baz/index.js index 44acc13da6..84f587f2a1 100644 --- a/test/fixtures/node_modules/baz/index.js +++ b/test/fixtures/node_modules/baz/index.js @@ -25,11 +25,5 @@ console.error(module.paths.join('\n')+'\n'); var assert = require('assert'); assert.equal(require('bar'), require('../bar.js')); -// since this is inside a node_modules folder, -// it should be impossible to ever see /node_modules in the -// lookup paths, since it's rooted on the uppermost node_modules -// directory. -assert.equal(-1, module.paths.indexOf('/node_modules')); - // this should work, and get the one in ./node_modules/asdf.js assert.equal(require('asdf'), require('./node_modules/asdf.js'));