Skip to content

Commit de4882c

Browse files
committed
module: exclude node:vfs from builtinModules when flag is disabled
Mirrors the recently-merged handling for node:ffi (see #63158): when --experimental-vfs is not set, node:vfs is filtered out of the public Module.builtinModules list. Adds matching coverage in test-vfs-flag. Refs: #63158 Assisted-by: Claude-Opus4.7 Signed-off-by: Matteo Collina <hello@matteocollina.com>
1 parent 034e1b2 commit de4882c

2 files changed

Lines changed: 19 additions & 0 deletions

File tree

lib/internal/modules/cjs/loader.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,6 +490,9 @@ function initializeCJS() {
490490
if (!getOptionValue('--experimental-quic')) {
491491
modules = modules.filter((i) => i !== 'node:quic');
492492
}
493+
if (!getOptionValue('--experimental-vfs')) {
494+
modules = modules.filter((i) => i !== 'node:vfs');
495+
}
493496
Module.builtinModules = ObjectFreeze(modules);
494497

495498
initializeCjsConditions();

test/parallel/test-vfs-flag.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,19 @@ const assert = require('assert');
4848
assert.strictEqual(r.status, 1);
4949
assert.match(r.stderr.toString(), /Cannot find module 'vfs'/);
5050
}
51+
52+
// Module.builtinModules reflects whether --experimental-vfs is active.
53+
for (const [flag, expected] of [
54+
['--experimental-vfs', 'true\n'],
55+
['--no-experimental-vfs', 'false\n'],
56+
]) {
57+
const r = spawnSync(process.execPath, [
58+
flag,
59+
'-p',
60+
'require("node:module").builtinModules.includes("node:vfs")',
61+
], { encoding: 'utf8' });
62+
assert.strictEqual(r.stdout, expected);
63+
assert.strictEqual(r.stderr, '');
64+
assert.strictEqual(r.status, 0);
65+
assert.strictEqual(r.signal, null);
66+
}

0 commit comments

Comments
 (0)