Skip to content

Commit 09dc3e8

Browse files
committed
[Fix] sync/async: when package.json main is not a string, throw an error
Fixes #178.
1 parent 29a4994 commit 09dc3e8

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

test/resolver.js

+13
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,19 @@ test('non-string "main" field in package.json', function (t) {
390390
});
391391
});
392392

393+
test('non-string "main" field in package.json', function (t) {
394+
t.plan(5);
395+
396+
var dir = path.join(__dirname, 'resolver');
397+
resolve('./invalid_main', { basedir: dir }, function (err, res, pkg) {
398+
t.ok(err, 'errors on non-string main');
399+
t.equal(err.message, 'package “invalid main” `main` must be a string');
400+
t.equal(err.code, 'INVALID_PACKAGE_MAIN');
401+
t.equal(res, undefined, 'res is undefined');
402+
t.equal(pkg, undefined, 'pkg is undefined');
403+
});
404+
});
405+
393406
test('browser field in package.json', function (t) {
394407
t.plan(3);
395408

test/resolver_sync.js

+14
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,20 @@ test('non-string "main" field in package.json', function (t) {
308308
t.end();
309309
});
310310

311+
test('non-string "main" field in package.json', function (t) {
312+
var dir = path.join(__dirname, 'resolver');
313+
try {
314+
var result = resolve.sync('./invalid_main', { basedir: dir });
315+
t.equal(result, undefined, 'result should not exist');
316+
t.fail('should not get here');
317+
} catch (err) {
318+
t.ok(err, 'errors on non-string main');
319+
t.equal(err.message, 'package “invalid main” `main` must be a string');
320+
t.equal(err.code, 'INVALID_PACKAGE_MAIN');
321+
}
322+
t.end();
323+
});
324+
311325
test('browser field in package.json', function (t) {
312326
var dir = path.join(__dirname, 'resolver');
313327
var res = resolve.sync('./browser_field', {

0 commit comments

Comments
 (0)