diff --git a/lib/module.js b/lib/module.js index f94da1d04..ba0b4f355 100644 --- a/lib/module.js +++ b/lib/module.js @@ -85,7 +85,8 @@ function tryPackage(requestPath, exts) { if (!pkg || !pkg.main) return false; var filename = path.resolve(requestPath, pkg.main); - return tryFile(filename) || tryExtensions(filename, exts); + return tryFile(filename) || tryExtensions(filename, exts) || + tryExtensions(path.resolve(filename, 'index'), exts); } // In order to minimize unnecessary lstat() calls, diff --git a/test/fixtures/packages/main-index/package-main-module/index.js b/test/fixtures/packages/main-index/package-main-module/index.js new file mode 100644 index 000000000..a9fe79564 --- /dev/null +++ b/test/fixtures/packages/main-index/package-main-module/index.js @@ -0,0 +1 @@ +exports.ok = "ok" diff --git a/test/fixtures/packages/main-index/package.json b/test/fixtures/packages/main-index/package.json new file mode 100644 index 000000000..13a7d5804 --- /dev/null +++ b/test/fixtures/packages/main-index/package.json @@ -0,0 +1,3 @@ +{"name":"package-name" +,"version":"1.2.3" +,"main":"package-main-module"} diff --git a/test/simple/test-module-loading.js b/test/simple/test-module-loading.js index 12f685ecd..4b7062ff3 100644 --- a/test/simple/test-module-loading.js +++ b/test/simple/test-module-loading.js @@ -70,6 +70,8 @@ assert.notEqual(threeFolder, three); common.debug('test package.json require() loading'); assert.equal(require('../fixtures/packages/main').ok, 'ok', 'Failed loading package'); +assert.equal(require('../fixtures/packages/main-index').ok, 'ok', + 'Failed loading package with index.js in main subdir'); common.debug('test cycles containing a .. path'); var root = require('../fixtures/cycles/root'),