diff --git a/lib/module.js b/lib/module.js index fbb494af84..698483f729 100644 --- a/lib/module.js +++ b/lib/module.js @@ -58,6 +58,8 @@ Module._findPath = function(request, paths) { paths = ['']; } + var trailingSlash = (request.slice(-1) === '/'); + // check if the file exists and is not a directory function tryFile(requestPath) { try { @@ -89,13 +91,16 @@ Module._findPath = function(request, paths) { // For each path for (var i = 0, PL = paths.length; i < PL; i++) { var basePath = path.resolve(paths[i], request); + var filename; - // try to join the request to the path - var filename = tryFile(basePath); + if (!trailingSlash) { + // try to join the request to the path + filename = tryFile(basePath); - if (!filename) { - // try it with each of the extensions - filename = tryExtensions(basePath); + if (!filename && !trailingSlash) { + // try it with each of the extensions + filename = tryExtensions(basePath); + } } if (!filename) { diff --git a/test/fixtures/nested-index/three.js b/test/fixtures/nested-index/three.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/fixtures/nested-index/three/index.js b/test/fixtures/nested-index/three/index.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/simple/test-module-loading.js b/test/simple/test-module-loading.js index a9aaf3a69b..6c09285057 100644 --- a/test/simple/test-module-loading.js +++ b/test/simple/test-module-loading.js @@ -52,6 +52,13 @@ var one = require('../fixtures/nested-index/one'), two = require('../fixtures/nested-index/two'); assert.notEqual(one.hello, two.hello); +common.debug('test index.js in a folder with a trailing slash'); +var three = require('../fixtures/nested-index/three'), + threeFolder = require('../fixtures/nested-index/three/'), + threeIndex = require('../fixtures/nested-index/three/index.js'); +assert.equal(threeFolder, threeIndex); +assert.notEqual(threeFolder, three); + common.debug('test cycles containing a .. path'); var root = require('../fixtures/cycles/root'), foo = require('../fixtures/cycles/folder/foo');