diff --git a/lib/child_process.js b/lib/child_process.js index 3fb21f755be3d7..1afd5406af9fc7 100644 --- a/lib/child_process.js +++ b/lib/child_process.js @@ -743,6 +743,27 @@ function abortChildProcess(child, killSignal, reason) { * @returns {ChildProcess} */ function spawn(file, args, options) { + if ( + options == null && + ArrayIsArray(args) && + typeof file === 'string' && + file.length > 0 && + !StringPrototypeIncludes(file, '\u0000') && + !isZOS + ) { + const child = new ChildProcess(); + options = { + args: [file, ...args], + detached: false, + file, + windowsHide: false, + windowsVerbatimArguments: false, + }; + debug('spawn', options); + child.spawn(options); + return child; + } + options = normalizeSpawnArguments(file, args, options); validateTimeout(options.timeout); validateAbortSignal(options.signal, 'options.signal');