chore: remove Node.js patch on Module.globalPaths (#31275)

* chore: remove Node.js patch on Module.globalPaths

* chore: update patches

Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
This commit is contained in:
Cheng Zhao 2021-10-06 09:20:05 +09:00 committed by GitHub
parent 2a92d8f962
commit 959b657903
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 36 additions and 35 deletions

View file

@ -2,9 +2,6 @@ import * as path from 'path';
const Module = require('module'); const Module = require('module');
// Clear Node's global search paths.
Module.globalPaths.length = 0;
// We do not want to allow use of the VM module in the renderer process as // We do not want to allow use of the VM module in the renderer process as
// it conflicts with Blink's V8::Context internal logic. // it conflicts with Blink's V8::Context internal logic.
if (process.type === 'renderer') { if (process.type === 'renderer') {

View file

@ -1,4 +1,3 @@
make_module_globalpaths_a_reference.patch
refactor_alter_child_process_fork_to_use_execute_script_with.patch refactor_alter_child_process_fork_to_use_execute_script_with.patch
feat_add_uv_loop_watcher_queue_code.patch feat_add_uv_loop_watcher_queue_code.patch
feat_initialize_asar_support.patch feat_initialize_asar_support.patch

View file

@ -29,7 +29,7 @@ index 9d2799c3c9ac3b216c2289ae4e037dd228844d23..5b31df1207d4417a6f9b784574e37796
// TODO(joyeecheung): most of these should be deprecated and removed, // TODO(joyeecheung): most of these should be deprecated and removed,
diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js
index 40655b66fd2a50dac01f88d38457de4602022381..95147ec8a95761b0654e8403578c2c67191834ad 100644 index 5d75a0e6cb9692a303be6599226f20783e7863b8..eb7f4346035f0897d0f2b140277e48b3c7bb7546 100644
--- a/lib/internal/modules/cjs/loader.js --- a/lib/internal/modules/cjs/loader.js
+++ b/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js
@@ -1075,6 +1075,13 @@ Module.prototype._compile = function(content, filename) { @@ -1075,6 +1075,13 @@ Module.prototype._compile = function(content, filename) {

View file

@ -1,22 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Cheng Zhao <zcbenz@gmail.com>
Date: Sun, 14 Apr 2013 15:54:46 +0800
Subject: Make Module.globalPaths a reference.
We need to hack the search paths of the require function so we can
load libraries from embedded applications without modifications of
node's module code.
diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js
index 3f1dac356b81f437503422a8fb69df792db9c523..8258a46076d1d4905298016cb52247e2cf8432c5 100644
--- a/lib/internal/modules/cjs/loader.js
+++ b/lib/internal/modules/cjs/loader.js
@@ -1251,7 +1251,7 @@ Module._initPaths = function() {
modulePaths = paths;
// Clone as a shallow copy, for introspection.
- Module.globalPaths = ArrayPrototypeSlice(modulePaths);
+ Module.globalPaths = modulePaths;
};
Module._preloadModules = function(requests) {

View file

@ -6,7 +6,7 @@ Subject: Pass all globals through "require"
(cherry picked from commit 7d015419cb7a0ecfe6728431a4ed2056cd411d62) (cherry picked from commit 7d015419cb7a0ecfe6728431a4ed2056cd411d62)
diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js
index 8258a46076d1d4905298016cb52247e2cf8432c5..71059956705d1299a19cc9c940a998d9e9717a21 100644 index 3f1dac356b81f437503422a8fb69df792db9c523..dfaea25243826878afc0af96a77d0aef153fa76b 100644
--- a/lib/internal/modules/cjs/loader.js --- a/lib/internal/modules/cjs/loader.js
+++ b/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js
@@ -127,6 +127,13 @@ const { @@ -127,6 +127,13 @@ const {

View file

@ -22,7 +22,7 @@ index 58f7396990dddb7dd4cf3d23fcdcc1d48f52623e..ef06d0563fa7452348754418867a56c9
const nativeModule = internalBinding('native_module'); const nativeModule = internalBinding('native_module');
diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js
index 71059956705d1299a19cc9c940a998d9e9717a21..40655b66fd2a50dac01f88d38457de4602022381 100644 index dfaea25243826878afc0af96a77d0aef153fa76b..5d75a0e6cb9692a303be6599226f20783e7863b8 100644
--- a/lib/internal/modules/cjs/loader.js --- a/lib/internal/modules/cjs/loader.js
+++ b/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js
@@ -86,7 +86,7 @@ const fs = require('fs'); @@ -86,7 +86,7 @@ const fs = require('fs');

View file

@ -467,7 +467,8 @@ node::Environment* NodeBindings::CreateEnvironment(
node::Environment* env; node::Environment* env;
uint64_t flags = node::EnvironmentFlags::kDefaultFlags | uint64_t flags = node::EnvironmentFlags::kDefaultFlags |
node::EnvironmentFlags::kHideConsoleWindows; node::EnvironmentFlags::kHideConsoleWindows |
node::EnvironmentFlags::kNoGlobalSearchPaths;
if (browser_env_ != BrowserEnvironment::kBrowser) { if (browser_env_ != BrowserEnvironment::kBrowser) {
// Only one ESM loader can be registered per isolate - // Only one ESM loader can be registered per isolate -

View file

@ -1,16 +1,18 @@
const Module = require('module');
const path = require('path'); const path = require('path');
const v8 = require('v8'); const v8 = require('v8');
Module.globalPaths.push(path.resolve(__dirname, '../spec/node_modules')); module.paths.push(path.resolve(__dirname, '../spec/node_modules'));
// Extra module paths which can be used to load Mocha reporters // Extra module paths which can be used to load Mocha reporters
if (process.env.ELECTRON_TEST_EXTRA_MODULE_PATHS) { if (process.env.ELECTRON_TEST_EXTRA_MODULE_PATHS) {
for (const modulePath of process.env.ELECTRON_TEST_EXTRA_MODULE_PATHS.split(':')) { for (const modulePath of process.env.ELECTRON_TEST_EXTRA_MODULE_PATHS.split(':')) {
Module.globalPaths.push(modulePath); module.paths.push(modulePath);
} }
} }
// Add search paths for loaded spec files
require('../spec/global-paths')(module.paths);
// We want to terminate on errors, not throw up a dialog // We want to terminate on errors, not throw up a dialog
process.on('uncaughtException', (err) => { process.on('uncaughtException', (err) => {
console.error('Unhandled exception in main spec runner:', err); console.error('Unhandled exception in main spec runner:', err);

View file

@ -108,6 +108,15 @@ describe('modules support', () => {
}); });
describe('Module._nodeModulePaths', () => { describe('Module._nodeModulePaths', () => {
// Work around the hack in spec/global-paths.
beforeEach(() => {
Module.ignoreGlobalPathsHack = true;
});
afterEach(() => {
Module.ignoreGlobalPathsHack = false;
});
describe('when the path is inside the resources path', () => { describe('when the path is inside the resources path', () => {
it('does not include paths outside of the resources path', () => { it('does not include paths outside of the resources path', () => {
let modulePath = process.resourcesPath; let modulePath = process.resourcesPath;

13
spec/global-paths.js Normal file
View file

@ -0,0 +1,13 @@
const Module = require('module');
module.exports = (paths) => {
const nodeModulePaths = Module._nodeModulePaths;
Module.ignoreGlobalPathsHack = false;
Module._nodeModulePaths = (from) => {
if (Module.ignoreGlobalPathsHack) {
return nodeModulePaths(from);
} else {
return nodeModulePaths(from).concat(paths);
}
};
};

View file

@ -5,7 +5,6 @@
// Deprecated APIs are still supported and should be tested. // Deprecated APIs are still supported and should be tested.
process.throwDeprecation = false process.throwDeprecation = false
const Module = require('module');
const path = require('path') const path = require('path')
const electron = require('electron') const electron = require('electron')
const { ipcRenderer } = electron const { ipcRenderer } = electron
@ -13,10 +12,13 @@
// Extra module paths which can be used to load Mocha reporters // Extra module paths which can be used to load Mocha reporters
if (process.env.ELECTRON_TEST_EXTRA_MODULE_PATHS) { if (process.env.ELECTRON_TEST_EXTRA_MODULE_PATHS) {
for (const modulePath of process.env.ELECTRON_TEST_EXTRA_MODULE_PATHS.split(':')) { for (const modulePath of process.env.ELECTRON_TEST_EXTRA_MODULE_PATHS.split(':')) {
Module.globalPaths.push(modulePath); module.paths.push(modulePath);
} }
} }
// Add search paths for loaded spec files
require('../global-paths')(module.paths);
// Set up chai-as-promised here first to avoid conflicts // Set up chai-as-promised here first to avoid conflicts
// It must be loaded first or really strange things happen inside // It must be loaded first or really strange things happen inside
// chai that cause test failures // chai that cause test failures