From 854a52bfa27fa91a0f025c6e37d9faf3969824e8 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Sun, 6 Nov 2022 19:35:50 +0100 Subject: [PATCH 1/2] lib: do not throw if global property is no longer configurable Fixes: https://github.com/nodejs/node/issues/45336 --- lib/internal/modules/cjs/helpers.js | 23 +++++++++++++---------- test/parallel/test-cli-eval.js | 9 +++++++++ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/lib/internal/modules/cjs/helpers.js b/lib/internal/modules/cjs/helpers.js index 3c49ab0a5d84cb..fea3fbcf48dc00 100644 --- a/lib/internal/modules/cjs/helpers.js +++ b/lib/internal/modules/cjs/helpers.js @@ -176,16 +176,19 @@ function addBuiltinLibsToObject(object, dummyModuleName) { get: () => { const lib = dummyModule.require(name); - // Disable the current getter/setter and set up a new - // non-enumerable property. - delete object[name]; - ObjectDefineProperty(object, name, { - __proto__: null, - get: () => lib, - set: setReal, - configurable: true, - enumerable: false - }); + try { + // Override the current getter/setter and set up a new + // non-enumerable property. + ObjectDefineProperty(object, name, { + __proto__: null, + get: () => lib, + set: setReal, + configurable: true, + enumerable: false, + }); + } catch { + // If the property is no longer configurable, ignore the error. + } return lib; }, diff --git a/test/parallel/test-cli-eval.js b/test/parallel/test-cli-eval.js index dcc2b8fcde3ca4..1d7bedd24e7340 100644 --- a/test/parallel/test-cli-eval.js +++ b/test/parallel/test-cli-eval.js @@ -354,3 +354,12 @@ child.exec( common.mustSucceed((stdout) => { assert.match(stdout, /^number/); })); + +// Regression test for https://github.com/nodejs/node/issues/45336 +child.exec(`${nodejs} -p '` + + 'Object.defineProperty(global, "fs", { configurable: false });' + + 'fs === require("node:fs")' + + '\'', + common.mustSucceed((stdout) => { + assert.match(stdout, /^true/); + })); From 91d8336a575417dee59d09a5099ba982a0ba0478 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Tue, 15 Nov 2022 14:44:57 +0100 Subject: [PATCH 2/2] fix test on Windows --- test/parallel/test-cli-eval.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/parallel/test-cli-eval.js b/test/parallel/test-cli-eval.js index 1d7bedd24e7340..b993dd474149e9 100644 --- a/test/parallel/test-cli-eval.js +++ b/test/parallel/test-cli-eval.js @@ -356,10 +356,10 @@ child.exec( })); // Regression test for https://github.com/nodejs/node/issues/45336 -child.exec(`${nodejs} -p '` + - 'Object.defineProperty(global, "fs", { configurable: false });' + - 'fs === require("node:fs")' + - '\'', - common.mustSucceed((stdout) => { - assert.match(stdout, /^true/); - })); +child.execFile(process.execPath, + ['-p', + 'Object.defineProperty(global, "fs", { configurable: false });' + + 'fs === require("node:fs")'], + common.mustSucceed((stdout) => { + assert.match(stdout, /^true/); + }));