diff options
author | Rongjian Zhang <pd4d10@gmail.com> | 2019-11-22 14:29:30 +0800 |
---|---|---|
committer | Rich Trott <rtrott@gmail.com> | 2019-11-28 10:22:53 -0800 |
commit | f5ef7cd22231987a73af9f02cc5f6c80b6dbbd9b (patch) | |
tree | f5385035b45fbd892b1505c342c360866b959840 | |
parent | 4d73fd39489c6c2742cc16107f00dc81c7239706 (diff) | |
download | android-node-v8-f5ef7cd22231987a73af9f02cc5f6c80b6dbbd9b.tar.gz android-node-v8-f5ef7cd22231987a73af9f02cc5f6c80b6dbbd9b.tar.bz2 android-node-v8-f5ef7cd22231987a73af9f02cc5f6c80b6dbbd9b.zip |
module: fix specifier resolution algorithm
Fixes: https://github.com/nodejs/node/issues/30520
PR-URL: https://github.com/nodejs/node/pull/30574
Reviewed-By: Guy Bedford <guybedford@gmail.com>
Reviewed-By: Myles Borins <myles.borins@gmail.com>
-rw-r--r-- | lib/internal/modules/run_main.js | 4 | ||||
-rw-r--r-- | test/es-module/test-esm-specifiers.mjs | 22 |
2 files changed, 26 insertions, 0 deletions
diff --git a/lib/internal/modules/run_main.js b/lib/internal/modules/run_main.js index 1061727c78..5f8b1f53d3 100644 --- a/lib/internal/modules/run_main.js +++ b/lib/internal/modules/run_main.js @@ -24,6 +24,10 @@ function shouldUseESMLoader(mainPath) { const userLoader = getOptionValue('--experimental-loader'); if (userLoader) return true; + const esModuleSpecifierResolution = + getOptionValue('--es-module-specifier-resolution'); + if (esModuleSpecifierResolution === 'node') + return true; // Determine the module format of the main if (mainPath && mainPath.endsWith('.mjs')) return true; diff --git a/test/es-module/test-esm-specifiers.mjs b/test/es-module/test-esm-specifiers.mjs index 3e7bc18196..fdf9e5b25e 100644 --- a/test/es-module/test-esm-specifiers.mjs +++ b/test/es-module/test-esm-specifiers.mjs @@ -1,6 +1,9 @@ // Flags: --es-module-specifier-resolution=node import { mustNotCall } from '../common/index.mjs'; import assert from 'assert'; +import path from 'path'; +import { spawn } from 'child_process'; +import { fileURLToPath } from 'url'; // commonJS index.js import commonjs from '../fixtures/es-module-specifiers/package-type-commonjs'; @@ -33,3 +36,22 @@ async function main() { } main().catch(mustNotCall); + +// Test path from command line arguments +[ + 'package-type-commonjs', + 'package-type-module', + '/', + '/index', +].forEach((item) => { + const modulePath = path.join( + fileURLToPath(import.meta.url), + '../../fixtures/es-module-specifiers', + item, + ); + spawn(process.execPath, + ['--es-module-specifier-resolution=node', modulePath], + { stdio: 'inherit' }).on('exit', (code) => { + assert.strictEqual(code, 0); + }); +}); |