A module ID with a trailing slash must be a dir.

require('./foo/') should not try to load './foo.js'.  It should only
look for ./foo/index.js

Closes GH-588
v0.7.4-release
isaacs 2011-01-27 13:14:47 -08:00 committed by Ryan Dahl
parent 36ef5643c3
commit 6cdeb3b3fd
4 changed files with 17 additions and 5 deletions

View File

@ -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) {

View File

View File

View File

@ -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');