Skip to content

Commit 992b11a

Browse files
committed
fixup!
1 parent b3d78d8 commit 992b11a

6 files changed

Lines changed: 32 additions & 8 deletions

File tree

doc/api/process.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1521,8 +1521,9 @@ added: REPLACEME
15211521
15221522
* Type: {URL | undefined}
15231523
1524-
The entrypoint that node was instantiated with, or {undefined} if node
1525-
was instantiated without one (e.g., in the REPL).
1524+
The entry point that Node.js was started with. Worker threads inherit this
1525+
value. If Node.js was started without an entry point, such as in the REPL, the
1526+
value is {undefined}.
15261527
15271528
## `process.env`
15281529

lib/internal/main/worker_thread.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ port.on('message', (message) => {
9696
argv,
9797
cwdCounter,
9898
doEval,
99+
entrypoint,
99100
environmentData,
100101
filename,
101102
hasStdin,
@@ -104,6 +105,10 @@ port.on('message', (message) => {
104105
mainThreadPort,
105106
} = message;
106107

108+
const { URL } = require('internal/url');
109+
defineEntrypoint(entrypoint === undefined ?
110+
undefined : new URL(entrypoint));
111+
107112
if (doEval !== 'internal') {
108113
if (argv !== undefined) {
109114
ArrayPrototypePushApply(process.argv, argv);
@@ -134,11 +139,7 @@ port.on('message', (message) => {
134139
workerIo.sharedCwdCounter = cwdCounter;
135140

136141
const isLoaderHookWorker = (filename === 'internal/modules/esm/worker' && doEval === 'internal');
137-
if (isLoaderHookWorker) {
138-
const { URL } = require('internal/url');
139-
defineEntrypoint(workerData.entrypoint === undefined ?
140-
undefined : new URL(workerData.entrypoint));
141-
} else {
142+
if (!isLoaderHookWorker) {
142143
// If we are in the loader hook worker, delay the module loader initializations until
143144
// initializeAsyncLoaderHooksOnLoaderHookWorker() which needs to run preloads
144145
// after the asynchronous loader hooks are registered.

lib/internal/modules/esm/hooks.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,6 @@ class AsyncLoaderHookWorker {
530530
stdout: false,
531531
trackUnmanagedFds: false,
532532
workerData: {
533-
entrypoint: process.entrypoint?.href,
534533
lock,
535534
},
536535
});

lib/internal/worker.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,7 @@ class Worker extends EventEmitter {
362362

363363
this[kPort].postMessage({
364364
argv,
365+
entrypoint: process.entrypoint?.href,
365366
type: messageTypes.LOAD_SCRIPT,
366367
filename,
367368
doEval,
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
'use strict';
2+
3+
const { isMainThread, workerData, Worker } = require('node:worker_threads');
4+
5+
if (isMainThread || workerData === 'nested') {
6+
new Worker(__filename, { workerData: isMainThread ? 'nested' : 'leaf' });
7+
} else {
8+
console.log(process.entrypoint.href);
9+
}

test/parallel/test-process-entrypoint.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ const cjsFixtureURL = fixtures.fileURL('entrypoint', 'commonjs.cjs').href;
1313
const mjsFixture = fixtures.path('entrypoint', 'module.mjs');
1414
const mjsFixtureURL = fixtures.fileURL('entrypoint', 'module.mjs').href;
1515

16+
const workerFixture = fixtures.path('entrypoint', 'worker.cjs');
17+
const workerFixtureURL = fixtures.fileURL('entrypoint', 'worker.cjs').href;
18+
1619
const cjsPreload = fixtures.path('entrypoint', 'check-commonjs.cjs');
1720
const esmPreload = fixtures.fileURL('entrypoint', 'check-module.mjs').href;
1821
const loader = fixtures.fileURL('entrypoint', 'loader.mjs').href;
@@ -79,6 +82,16 @@ const testCases = [
7982
],
8083
expected: mjsFixtureURL,
8184
},
85+
{
86+
name: 'is inherited by worker threads and their preloads and loaders',
87+
args: [
88+
'--require', cjsPreload,
89+
'--import', esmPreload,
90+
'--loader', loader,
91+
workerFixture,
92+
],
93+
expected: workerFixtureURL,
94+
},
8295
{
8396
name: 'supports non-file --entry-url entry points',
8497
args: ['--entry-url', `data:text/javascript,${printEntrypoint}`],

0 commit comments

Comments
 (0)