0
0
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:
Guy Bedford 2020-04-26 21:40:01 -07:00
parent 2e441e152f
commit 2496db8e09
5 changed files with 15 additions and 15 deletions

View File

@ -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.

View File

@ -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(

View 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
View File

@ -0,0 +1 @@
export default 'asdf';

4
test/fixtures/node_modules/type-main/package.json generated vendored Normal file
View File

@ -0,0 +1,4 @@
{
"main": "index",
"type": "module"
}