Browse Source

fix: do not resolve electron entrypoints on disk (#39248)

* fix: do not resolve electron entrypoints on disk

Co-authored-by: Samuel Attard <[email protected]>

* chore: fixup .patches file after trop

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Samuel Attard <[email protected]>
Co-authored-by: John Kleinschmidt <[email protected]>
trop[bot] 1 year ago
parent
commit
878f18474e
2 changed files with 25 additions and 0 deletions
  1. 1 0
      patches/node/.patches
  2. 24 0
      patches/node/fix_do_not_resolve_electron_entrypoints.patch

+ 1 - 0
patches/node/.patches

@@ -55,3 +55,4 @@ chore_enable_c_17_for_native_modules.patch
 enable_crashpad_linux_node_processes.patch
 cherry-pick-09ae62b.patch
 allow_embedder_to_control_codegenerationfromstringscallback.patch
+fix_do_not_resolve_electron_entrypoints.patch

+ 24 - 0
patches/node/fix_do_not_resolve_electron_entrypoints.patch

@@ -0,0 +1,24 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Samuel Attard <[email protected]>
+Date: Wed, 26 Jul 2023 17:03:15 -0700
+Subject: fix: do not resolve electron entrypoints
+
+This wastes fs cycles and can result in strange behavior if this path actually exists on disk
+
+diff --git a/lib/internal/modules/run_main.js b/lib/internal/modules/run_main.js
+index 5a50d5d6afab6e6648f72a1c0efa1df4cd80bcd9..0be45309028b00a6957ee473322a9452a7fa7d67 100644
+--- a/lib/internal/modules/run_main.js
++++ b/lib/internal/modules/run_main.js
+@@ -13,6 +13,12 @@ const {
+ } = require('internal/modules/esm/handle_process_exit');
+ 
+ function resolveMainPath(main) {
++  // For built-in modules used as the main entry point we _never_
++  // want to waste cycles resolving them to file paths on disk
++  // that actually might exist
++  if (typeof main === 'string' && main.startsWith('electron/js2c')) {
++    return main;
++  }
+   // Note extension resolution for the main entry point can be deprecated in a
+   // future major.
+   // Module._findPath is monkey-patchable here.