Closes GH-690 node_modules folders should be highest priority
authorisaacs <i@izs.me>
Fri, 18 Feb 2011 22:18:38 +0000 (14:18 -0800)
committerRyan Dahl <ry@tinyclouds.org>
Mon, 28 Feb 2011 01:14:16 +0000 (17:14 -0800)
doc/api/modules.markdown
lib/module.js

index 5f2b747..f07fcd2 100644 (file)
@@ -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
index 304387d..ff5ce85 100644 (file)
@@ -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];
   }