mirror of
https://github.com/nodejs/node.git
synced 2024-12-01 16:10:02 +01:00
module: no type module resolver side effects
PR-URL: https://github.com/nodejs/node/pull/33086 Reviewed-By: Jan Krems <jan.krems@gmail.com> Reviewed-By: Geoffrey Booth <webmaster@geoffreybooth.com>
This commit is contained in:
parent
2e441e152f
commit
2496db8e09
@ -1601,13 +1601,6 @@ The resolver can throw the following errors:
|
||||
> 1. Return **PACKAGE_EXPORTS_TARGET_RESOLVE**(_packageURL_,
|
||||
> _mainExport_, _""_).
|
||||
> 1. Throw a _Package Path Not Exported_ error.
|
||||
> 1. If _pjson.main_ is a String, then
|
||||
> 1. Let _resolvedMain_ be the URL resolution of _packageURL_, "/", and
|
||||
> _pjson.main_.
|
||||
> 1. If the file at _resolvedMain_ exists, then
|
||||
> 1. Return _resolvedMain_.
|
||||
> 1. If _pjson.type_ is equal to _"module"_, then
|
||||
> 1. Throw a _Module Not Found_ error.
|
||||
> 1. Let _legacyMainURL_ be the result applying the legacy
|
||||
> **LOAD_AS_DIRECTORY** CommonJS resolver to _packageURL_, throwing a
|
||||
> _Module Not Found_ error for no resolution.
|
||||
|
@ -439,11 +439,6 @@ function packageMainResolve(packageJSONUrl, packageConfig, base, conditions) {
|
||||
|
||||
throw new ERR_PACKAGE_PATH_NOT_EXPORTED(packageJSONUrl, '.');
|
||||
}
|
||||
if (packageConfig.main !== undefined) {
|
||||
const resolved = new URL(packageConfig.main, packageJSONUrl);
|
||||
const path = fileURLToPath(resolved);
|
||||
if (tryStatSync(path).isFile()) return resolved;
|
||||
}
|
||||
if (getOptionValue('--experimental-specifier-resolution') === 'node') {
|
||||
if (packageConfig.main !== undefined) {
|
||||
return finalizeResolution(
|
||||
@ -453,9 +448,7 @@ function packageMainResolve(packageJSONUrl, packageConfig, base, conditions) {
|
||||
new URL('index', packageJSONUrl), base);
|
||||
}
|
||||
}
|
||||
if (packageConfig.type !== 'module') {
|
||||
return legacyMainResolve(packageJSONUrl, packageConfig);
|
||||
}
|
||||
return legacyMainResolve(packageJSONUrl, packageConfig);
|
||||
}
|
||||
|
||||
throw new ERR_MODULE_NOT_FOUND(
|
||||
|
9
test/es-module/test-esm-type-main.mjs
Normal file
9
test/es-module/test-esm-type-main.mjs
Normal file
@ -0,0 +1,9 @@
|
||||
import { mustNotCall } from '../common/index.mjs';
|
||||
import assert from 'assert';
|
||||
import { importFixture } from '../fixtures/pkgexports.mjs';
|
||||
|
||||
(async () => {
|
||||
const m = await importFixture('type-main');
|
||||
assert.strictEqual(m.default, 'asdf');
|
||||
})()
|
||||
.catch(mustNotCall);
|
1
test/fixtures/node_modules/type-main/index.js
generated
vendored
Normal file
1
test/fixtures/node_modules/type-main/index.js
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
export default 'asdf';
|
4
test/fixtures/node_modules/type-main/package.json
generated
vendored
Normal file
4
test/fixtures/node_modules/type-main/package.json
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"main": "index",
|
||||
"type": "module"
|
||||
}
|
Loading…
Reference in New Issue
Block a user