Skip to content

Commit f721079

Browse files
authored
Merge pull request #162 from ClearCanvas/master
[New] include filename in error message
2 parents 1f86ce1 + 57b5bec commit f721079

File tree

4 files changed

+33
-10
lines changed

4 files changed

+33
-10
lines changed

lib/async.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,21 +33,22 @@ module.exports = function resolve(x, options, callback) {
3333

3434
var extensions = opts.extensions || ['.js'];
3535
var basedir = opts.basedir || path.dirname(caller());
36+
var parent = opts.filename || basedir;
3637

3738
opts.paths = opts.paths || [];
3839

3940
if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(x)) {
40-
var res = path.resolve(basedir, x);
41+
var res = path.resolve(parent, x);
4142
if (x === '..' || x.slice(-1) === '/') res += '/';
42-
if (/\/$/.test(x) && res === basedir) {
43+
if (/\/$/.test(x) && res === parent) {
4344
loadAsDirectory(res, opts.package, onfile);
4445
} else loadAsFile(res, opts.package, onfile);
45-
} else loadNodeModules(x, basedir, function (err, n, pkg) {
46+
} else loadNodeModules(x, parent, function (err, n, pkg) {
4647
if (err) cb(err);
4748
else if (core[x]) return cb(null, x);
4849
else if (n) return cb(null, n, pkg);
4950
else {
50-
var moduleError = new Error("Cannot find module '" + x + "' from '" + basedir + "'");
51+
var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'");
5152
moduleError.code = 'MODULE_NOT_FOUND';
5253
cb(moduleError);
5354
}
@@ -60,7 +61,7 @@ module.exports = function resolve(x, options, callback) {
6061
if (err) cb(err);
6162
else if (d) cb(null, d, pkg);
6263
else {
63-
var moduleError = new Error("Cannot find module '" + x + "' from '" + basedir + "'");
64+
var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'");
6465
moduleError.code = 'MODULE_NOT_FOUND';
6566
cb(moduleError);
6667
}

lib/sync.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,25 @@ module.exports = function (x, options) {
2424

2525
var extensions = opts.extensions || ['.js'];
2626
var basedir = opts.basedir || path.dirname(caller());
27+
var parent = opts.filename || basedir;
2728

2829
opts.paths = opts.paths || [];
2930

3031
if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(x)) {
31-
var res = path.resolve(basedir, x);
32+
var res = path.resolve(parent, x);
3233
if (x === '..' || x.slice(-1) === '/') res += '/';
3334
var m = loadAsFileSync(res) || loadAsDirectorySync(res);
3435
if (m) return m;
3536
} else if (core[x]) {
3637
return x;
3738
} else {
38-
var n = loadNodeModulesSync(x, basedir);
39+
var n = loadNodeModulesSync(x, parent);
3940
if (n) return n;
4041
}
4142

4243
if (core[x]) return x;
4344

44-
var err = new Error("Cannot find module '" + x + "' from '" + basedir + "'");
45+
var err = new Error("Cannot find module '" + x + "' from '" + parent + "'");
4546
err.code = 'MODULE_NOT_FOUND';
4647
throw err;
4748

test/resolver.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ var test = require('tape');
33
var resolve = require('../');
44

55
test('async foo', function (t) {
6-
t.plan(10);
6+
t.plan(11);
77
var dir = path.join(__dirname, 'resolver');
88

99
resolve('./foo', { basedir: dir }, function (err, res, pkg) {
@@ -34,6 +34,11 @@ test('async foo', function (t) {
3434
t.equal(err.message, "Cannot find module 'foo' from '" + path.resolve(dir) + "'");
3535
t.equal(err.code, 'MODULE_NOT_FOUND');
3636
});
37+
38+
// Test that filename is reported as the "from" value when passed.
39+
resolve('foo', { basedir: dir, filename: path.join(dir, 'baz.js') }, function (err) {
40+
t.equal(err.message, "Cannot find module 'foo' from '" + path.join(dir, 'baz.js') + "'");
41+
});
3742
});
3843

3944
test('bar', function (t) {
@@ -176,7 +181,7 @@ test('normalize', function (t) {
176181
});
177182

178183
test('cup', function (t) {
179-
t.plan(4);
184+
t.plan(5);
180185
var dir = path.join(__dirname, 'resolver');
181186

182187
resolve('./cup', { basedir: dir, extensions: ['.js', '.coffee'] }, function (err, res) {
@@ -193,6 +198,11 @@ test('cup', function (t) {
193198
t.equal(err.message, "Cannot find module './cup' from '" + path.resolve(dir) + "'");
194199
t.equal(err.code, 'MODULE_NOT_FOUND');
195200
});
201+
202+
// Test that filename is reported as the "from" value when passed.
203+
resolve('./cup', { basedir: dir, extensions: ['.js'], filename: path.join(dir, 'cupboard.js') }, function (err, res) {
204+
t.equal(err.message, "Cannot find module './cup' from '" + path.join(dir, 'cupboard.js') + "'");
205+
});
196206
});
197207

198208
test('mug', function (t) {

test/resolver_sync.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,17 @@ test('foo', function (t) {
1919
resolve.sync('foo', { basedir: dir });
2020
});
2121

22+
// Test that filename is reported as the "from" value when passed.
23+
t.throws(
24+
function () {
25+
resolve.sync('foo', { basedir: dir, filename: path.join(dir, 'bar.js') });
26+
},
27+
{
28+
name: 'Error',
29+
message: "Cannot find module 'foo' from '" + path.join(dir, 'bar.js') + "'"
30+
}
31+
);
32+
2233
t.end();
2334
});
2435

0 commit comments

Comments
 (0)