| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent a058cef commit 93c4dc5
4 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -666,7 +666,8 @@ if (isWindows) { | |||
| 666 | 666 | } | |
| 667 | 667 | ||
| 668 | 668 | Module._resolveLookupPaths = function(request, parent) { | |
| 669 | - if (NativeModule.canBeRequiredByUsers(request)) { | ||
| 669 | + if (NativeModule.canBeRequiredByUsers(request) && | ||
| 670 | + NativeModule.canBeRequiredWithoutScheme(request)) { | ||
| 670 | 671 | debug('looking for %j in []', request); | |
| 671 | 672 | return null; | |
| 672 | 673 | } | |
@@ -803,11 +804,8 @@ Module._load = function(request, parent, isMain) { | |||
| 803 | 804 | } | |
| 804 | 805 | ||
| 805 | 806 | const mod = loadNativeModule(filename, request); | |
| 806 | - if (mod?.canBeRequiredByUsers) { | ||
| 807 | - if (!NativeModule.canBeRequiredWithoutScheme(filename)) { | ||
| 808 | - throw new ERR_UNKNOWN_BUILTIN_MODULE(filename); | ||
| 809 | - } | ||
| 810 | - | ||
| 807 | + if (mod?.canBeRequiredByUsers && | ||
| 808 | + NativeModule.canBeRequiredWithoutScheme(filename)) { | ||
| 811 | 809 | return mod.exports; | |
| 812 | 810 | } | |
| 813 | 811 | ||
@@ -854,7 +852,8 @@ Module._load = function(request, parent, isMain) { | |||
| 854 | 852 | ||
| 855 | 853 | Module._resolveFilename = function(request, parent, isMain, options) { | |
| 856 | 854 | if (StringPrototypeStartsWith(request, 'node:') || | |
| 857 | - NativeModule.canBeRequiredByUsers(request)) { | ||
| 855 | + (NativeModule.canBeRequiredByUsers(request) && | ||
| 856 | + NativeModule.canBeRequiredWithoutScheme(request))) { | ||
| 858 | 857 | return request; | |
| 859 | 858 | } | |
| 860 | 859 | ||
@@ -1286,7 +1285,8 @@ Module._preloadModules = function(requests) { | |||
| 1286 | 1285 | ||
| 1287 | 1286 | Module.syncBuiltinESMExports = function syncBuiltinESMExports() { | |
| 1288 | 1287 | for (const mod of NativeModule.map.values()) { | |
| 1289 | - if (mod.canBeRequiredByUsers) { | ||
| 1288 | + if (mod.canBeRequiredByUsers && | ||
| 1289 | + NativeModule.canBeRequiredWithoutScheme(mod.id)) { | ||
| 1290 | 1290 | mod.syncExports(); | |
| 1291 | 1291 | } | |
| 1292 | 1292 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -534,7 +534,8 @@ class ESMLoader { | |||
| 534 | 534 | globalThis, | |
| 535 | 535 | // Param getBuiltin | |
| 536 | 536 | (builtinName) => { | |
| 537 | - if (NativeModule.canBeRequiredByUsers(builtinName)) { | ||
| 537 | + if (NativeModule.canBeRequiredByUsers(builtinName) && | ||
| 538 | + NativeModule.canBeRequiredWithoutScheme(builtinName)) { | ||
| 538 | 539 | return require(builtinName); | |
| 539 | 540 | } | |
| 540 | 541 | throw new ERR_INVALID_ARG_VALUE('builtinName', builtinName); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -57,7 +57,6 @@ const { | |||
| 57 | 57 | ERR_PACKAGE_PATH_NOT_EXPORTED, | |
| 58 | 58 | ERR_UNSUPPORTED_DIR_IMPORT, | |
| 59 | 59 | ERR_NETWORK_IMPORT_DISALLOWED, | |
| 60 | - ERR_UNKNOWN_BUILTIN_MODULE, | ||
| 61 | 60 | ERR_UNSUPPORTED_ESM_URL_SCHEME, | |
| 62 | 61 | } = require('internal/errors').codes; | |
| 63 | 62 | const { Module: CJSModule } = require('internal/modules/cjs/loader'); | |
@@ -853,11 +852,8 @@ function parsePackageName(specifier, base) { | |||
| 853 | 852 | * @returns {resolved: URL, format? : string} | |
| 854 | 853 | */ | |
| 855 | 854 | function packageResolve(specifier, base, conditions) { | |
| 856 | - if (NativeModule.canBeRequiredByUsers(specifier)) { | ||
| 857 | - if (!NativeModule.canBeRequiredWithoutScheme(specifier)) { | ||
| 858 | - throw new ERR_UNKNOWN_BUILTIN_MODULE(specifier); | ||
| 859 | - } | ||
| 860 | - | ||
| 855 | + if (NativeModule.canBeRequiredByUsers(specifier) && | ||
| 856 | + NativeModule.canBeRequiredWithoutScheme(specifier)) { | ||
| 861 | 857 | return new URL('node:' + specifier); | |
| 862 | 858 | } | |
| 863 | 859 | ||
@@ -1041,7 +1037,8 @@ function checkIfDisallowedImport(specifier, parsed, parsedParentURL) { | |||
| 1041 | 1037 | ||
| 1042 | 1038 | return { url: parsed.href }; | |
| 1043 | 1039 | } | |
| 1044 | - if (NativeModule.canBeRequiredByUsers(specifier)) { | ||
| 1040 | + if (NativeModule.canBeRequiredByUsers(specifier) && | ||
| 1041 | + NativeModule.canBeRequiredWithoutScheme(specifier)) { | ||
| 1045 | 1042 | throw new ERR_NETWORK_IMPORT_DISALLOWED( | |
| 1046 | 1043 | specifier, | |
| 1047 | 1044 | parentURL, | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,15 +1,51 @@ | |||
| 1 | 1 | 'use strict'; | |
| 2 | 2 | const common = require('../common'); | |
| 3 | + const tmpdir = require('../common/tmpdir'); | ||
| 3 | 4 | const assert = require('assert'); | |
| 5 | + const { spawnSync } = require('child_process'); | ||
| 6 | + const fs = require('fs'); | ||
| 7 | + const path = require('path'); | ||
| 8 | + const { createRequire } = require('module'); | ||
| 4 | 9 | ||
| 5 | 10 | assert.throws( | |
| 6 | 11 | () => require('test'), | |
| 7 | - common.expectsError({ code: 'ERR_UNKNOWN_BUILTIN_MODULE' }), | ||
| 12 | + common.expectsError({ code: 'MODULE_NOT_FOUND' }), | ||
| 8 | 13 | ); | |
| 9 | 14 | ||
| 10 | 15 | (async () => { | |
| 11 | 16 | await assert.rejects( | |
| 12 | 17 | async () => import('test'), | |
| 13 | - common.expectsError({ code: 'ERR_UNKNOWN_BUILTIN_MODULE' }), | ||
| 18 | + common.expectsError({ code: 'ERR_MODULE_NOT_FOUND' }), | ||
| 14 | 19 | ); | |
| 15 | 20 | })().then(common.mustCall()); | |
| 21 | + | ||
| 22 | + assert.throws( | ||
| 23 | + () => require.resolve('test'), | ||
| 24 | + common.expectsError({ code: 'MODULE_NOT_FOUND' }), | ||
| 25 | + ); | ||
| 26 | + | ||
| 27 | + // Verify that files in node_modules can be resolved. | ||
| 28 | + tmpdir.refresh(); | ||
| 29 | + | ||
| 30 | + const packageRoot = path.join(tmpdir.path, 'node_modules', 'test'); | ||
| 31 | + const indexFile = path.join(packageRoot, 'index.js'); | ||
| 32 | + | ||
| 33 | + fs.mkdirSync(packageRoot, { recursive: true }); | ||
| 34 | + fs.writeFileSync(indexFile, 'module.exports = { marker: 1 };'); | ||
| 35 | + | ||
| 36 | + function test(argv) { | ||
| 37 | + const child = spawnSync(process.execPath, argv, { cwd: tmpdir.path }); | ||
| 38 | + assert.strictEqual(child.status, 0); | ||
| 39 | + assert.strictEqual(child.stdout.toString().trim(), '{ marker: 1 }'); | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + test(['-e', 'console.log(require("test"))']); | ||
| 43 | + test(['-e', 'import("test").then(m=>console.log(m.default))']); | ||
| 44 | + test(['--input-type=module', '-e', 'import test from "test";console.log(test)']); | ||
| 45 | + test(['--input-type=module', '-e', 'console.log((await import("test")).default)']); | ||
| 46 | + | ||
| 47 | + { | ||
| 48 | + const dummyFile = path.join(tmpdir.path, 'file.js'); | ||
| 49 | + const require = createRequire(dummyFile); | ||
| 50 | + assert.strictEqual(require.resolve('test'), indexFile); | ||
| 51 | + } | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments