From 3599c71dae1b293b712320afbd7e3961b056d458 Mon Sep 17 00:00:00 2001 From: isaacs Date: Fri, 18 Feb 2011 14:18:38 -0800 Subject: [PATCH] Closes GH-690 node_modules folders should be highest priority --- doc/api/modules.markdown | 4 ++++ lib/module.js | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/doc/api/modules.markdown b/doc/api/modules.markdown index 5f2b747..f07fcd2 100644 --- a/doc/api/modules.markdown +++ b/doc/api/modules.markdown @@ -212,6 +212,10 @@ the `NODE_PATH` environment variable might have been set to: /home/micheil/.node_modules:/usr/local/lib/node_modules +Loading from the `require.paths` locations is only performed if the +module could not be found using the `node_modules` algorithm above. +Global modules are lower priority than bundled dependencies. + #### **Note:** Please Avoid Modifying `require.paths` For compatibility reasons, `require.paths` is still given first priority diff --git a/lib/module.js b/lib/module.js index 304387d..ff5ce85 100644 --- a/lib/module.js +++ b/lib/module.js @@ -202,7 +202,10 @@ Module._resolveLookupPaths = function(request, parent) { var start = request.substring(0, 2); if (start !== './' && start !== '..') { var paths = Module._paths; - if (parent) paths = paths.concat(parent.paths); + if (parent) { + if (!parent.paths) parent.paths = []; + paths = parent.paths.concat(paths); + } return [request, paths]; } @@ -211,7 +214,7 @@ Module._resolveLookupPaths = function(request, parent) { // make require('./path/to/foo') work - normally the path is taken // from realpath(__filename) but with eval there is no filename var mainPaths = ['.'].concat(Module._paths); - mainPaths = mainPaths.concat(Module._nodeModulePaths('.')); + mainPaths = Module._nodeModulePaths('.').concat(mainPaths); return [request, mainPaths]; } -- 2.7.4