Skip to content

Commit 011628e

Browse files
committed
esm: fix misleading error when import empty package.json
1 parent 72537f5 commit 011628e

File tree

4 files changed

+28
-4
lines changed

4 files changed

+28
-4
lines changed

src/node_file.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3493,7 +3493,7 @@ void BindingData::LegacyMainResolve(const FunctionCallbackInfo<Value>& args) {
34933493
}
34943494

34953495
THROW_ERR_MODULE_NOT_FOUND(isolate,
3496-
"Cannot find package '%s' imported from %s",
3496+
"Entry point '%s' resolved from '%s' incorrectly",
34973497
package_initial_file,
34983498
*module_base);
34993499
}

test/es-module/test-cjs-legacyMainResolve.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,15 +129,15 @@ describe('legacyMainResolve', () => {
129129
);
130130
assert.throws(
131131
() => legacyMainResolve(packageJsonUrl, { main: null }, packageJsonUrl),
132-
{ message: /index\.js/, code: 'ERR_MODULE_NOT_FOUND' },
132+
{ message: /Entry point '[\w\S]+' resolved from '[\w\S]+' incorrectly/, code: 'ERR_MODULE_NOT_FOUND' },
133133
);
134134
});
135135

136136
it('should not crash when cannot resolve to a file that contains special chars', () => {
137137
const packageJsonUrl = pathToFileURL('/c/file%20with%20percents/package.json');
138138
assert.throws(
139139
() => legacyMainResolve(packageJsonUrl, { main: null }, packageJsonUrl),
140-
{ message: /index\.js/, code: 'ERR_MODULE_NOT_FOUND' },
140+
{ message: /Entry point '[\w\S]+' resolved from '[\w\S]+' incorrectly/, code: 'ERR_MODULE_NOT_FOUND' },
141141
);
142142
});
143143

@@ -150,7 +150,7 @@ describe('legacyMainResolve', () => {
150150
);
151151
assert.throws(
152152
() => legacyMainResolve(packageJsonUrl, { main: './index.node' }, packageJsonUrl),
153-
{ message: /index\.node/, code: 'ERR_MODULE_NOT_FOUND' },
153+
{ message: /Entry point '[\w\S]+' resolved from '[\w\S]+' incorrectly/, code: 'ERR_MODULE_NOT_FOUND' },
154154
);
155155
});
156156

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
'use strict';
2+
3+
const { spawnPromisified } = require('../common');
4+
const fixtures = require('../common/fixtures.js');
5+
const assert = require('node:assert');
6+
const { execPath } = require('node:process');
7+
const { describe, it } = require('node:test');
8+
9+
describe('Import empty module', { concurrency: true }, () => {
10+
it(async () => {
11+
const { code, signal, stdout, stderr } = await spawnPromisified(execPath, [
12+
'--no-warnings',
13+
'--eval',
14+
'import("empty")',
15+
], {
16+
cwd: fixtures.path(),
17+
});
18+
assert.match(stderr, /Entry point '[\w\S]+' resolved from '[\w\S]+' incorrectly/);
19+
assert.strictEqual(stdout, '');
20+
assert.strictEqual(code, 1);
21+
assert.strictEqual(signal, null);
22+
});
23+
});

test/fixtures/node_modules/empty/package.json

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)