Skip to content

Commit 81812ba

Browse files
authored
child_process: add support for URL to cp.fork
PR-URL: #41225 Reviewed-By: Mohammed Keyvanzadeh <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 23637e9 commit 81812ba

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

doc/api/child_process.md

+6-1
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,11 @@ controller.abort();
391391
<!-- YAML
392392
added: v0.5.0
393393
changes:
394+
- version:
395+
- REPLACEME
396+
pr-url: https://github.com/nodejs/node/pull/41225
397+
description: The `modulePath` parameter can be a WHATWG `URL` object using
398+
`file:` protocol.
394399
- version:
395400
- v16.4.0
396401
- v14.18.0
@@ -425,7 +430,7 @@ changes:
425430
description: The `stdio` option is supported now.
426431
-->
427432

428-
* `modulePath` {string} The module to run in the child.
433+
* `modulePath` {string|URL} The module to run in the child.
429434
* `args` {string\[]} List of string arguments.
430435
* `options` {Object}
431436
* `cwd` {string|URL} Current working directory of the child process.

lib/child_process.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ const MAX_BUFFER = 1024 * 1024;
9191

9292
/**
9393
* Spawns a new Node.js process + fork.
94-
* @param {string} modulePath
94+
* @param {string|URL} modulePath
9595
* @param {string[]} [args]
9696
* @param {{
9797
* cwd?: string;
@@ -112,7 +112,7 @@ const MAX_BUFFER = 1024 * 1024;
112112
* @returns {ChildProcess}
113113
*/
114114
function fork(modulePath /* , args, options */) {
115-
validateString(modulePath, 'modulePath');
115+
modulePath = getValidatedPath(modulePath, 'modulePath');
116116

117117
// Get options and args arguments.
118118
let execArgv;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { mustCall } from '../common/index.mjs';
2+
import { fork } from 'child_process';
3+
4+
if (process.argv[2] === 'child') {
5+
process.disconnect();
6+
} else {
7+
const child = fork(new URL(import.meta.url), ['child']);
8+
9+
child.on('disconnect', mustCall());
10+
child.once('exit', mustCall());
11+
}

0 commit comments

Comments
 (0)