diff --git a/lib/module.js b/lib/module.js index 02111970420..8e07bd73b09 100644 --- a/lib/module.js +++ b/lib/module.js @@ -197,7 +197,7 @@ function resolveModulePath(request, parent) { } var parentIdPath = path.dirname(parent.id + - (path.basename(parent.filename).match(new RegExp('^index\\.(' + exts.join('|') + ')$')) ? "/" : "")); + (path.basename(parent.filename).match(new RegExp('^index\\.(' + exts.join('|') + ')$')) ? "/." : "")); id = path.join(parentIdPath, request); // make sure require('./path') and require('path') get distinct ids, even // when called from the toplevel js file diff --git a/lib/path.js b/lib/path.js index 0316f966141..60c7850d453 100644 --- a/lib/path.js +++ b/lib/path.js @@ -38,11 +38,9 @@ exports.normalize = function (path, keepBlanks) { }; exports.dirname = function (path) { - // Can't strip trailing slashes since module.js incorrectly thinks - // dirname('/a/b/') should yield '/a/b' instead of '/a'. - // if (path.length > 1 && '/' === path[path.length-1]) { - // path = path.replace(/\/+$/, ''); - // } + if (path.length > 1 && '/' === path[path.length-1]) { + path = path.replace(/\/+$/, ''); + } var lastSlash = path.lastIndexOf('/'); switch (lastSlash) { case -1: diff --git a/test/simple/test-path.js b/test/simple/test-path.js index a2c07a8d8d7..7b16f9627a3 100644 --- a/test/simple/test-path.js +++ b/test/simple/test-path.js @@ -8,6 +8,7 @@ assert.equal(path.basename(f), "test-path.js"); assert.equal(path.basename(f, ".js"), "test-path"); assert.equal(path.extname(f), ".js"); assert.equal(path.dirname(f).substr(-11), "test/simple"); +assert.equal(path.dirname("/a/b/"), "/a"); assert.equal(path.dirname("/a/b"), "/a"); assert.equal(path.dirname("/a"), "/"); assert.equal(path.dirname("/"), "/");