mirror of
https://github.com/nodejs/node.git
synced 2025-05-03 09:23:11 +00:00

Some process methods are not supported in workers. This commit adds stubs that throw more informative errors. PR-URL: https://github.com/nodejs/node/pull/25587 Fixes: https://github.com/nodejs/node/issues/25448 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
62 lines
1.5 KiB
JavaScript
62 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
// This file contains process bootstrappers that can only be
|
|
// run in the worker thread.
|
|
const {
|
|
getEnvMessagePort
|
|
} = internalBinding('worker');
|
|
|
|
const {
|
|
kWaitingStreams,
|
|
ReadableWorkerStdio,
|
|
WritableWorkerStdio
|
|
} = require('internal/worker/io');
|
|
|
|
const {
|
|
codes: { ERR_WORKER_UNSUPPORTED_OPERATION }
|
|
} = require('internal/errors');
|
|
const workerStdio = {};
|
|
|
|
function initializeWorkerStdio() {
|
|
const port = getEnvMessagePort();
|
|
port[kWaitingStreams] = 0;
|
|
workerStdio.stdin = new ReadableWorkerStdio(port, 'stdin');
|
|
workerStdio.stdout = new WritableWorkerStdio(port, 'stdout');
|
|
workerStdio.stderr = new WritableWorkerStdio(port, 'stderr');
|
|
|
|
return {
|
|
getStdout() { return workerStdio.stdout; },
|
|
getStderr() { return workerStdio.stderr; },
|
|
getStdin() { return workerStdio.stdin; }
|
|
};
|
|
}
|
|
|
|
// The execution of this function itself should not cause any side effects.
|
|
function wrapProcessMethods(binding) {
|
|
function umask(mask) {
|
|
// process.umask() is a read-only operation in workers.
|
|
if (mask !== undefined) {
|
|
throw new ERR_WORKER_UNSUPPORTED_OPERATION('Setting process.umask()');
|
|
}
|
|
|
|
return binding.umask(mask);
|
|
}
|
|
|
|
return { umask };
|
|
}
|
|
|
|
function unavailable(name) {
|
|
function unavailableInWorker() {
|
|
throw new ERR_WORKER_UNSUPPORTED_OPERATION(name);
|
|
}
|
|
|
|
unavailableInWorker.disabled = true;
|
|
return unavailableInWorker;
|
|
}
|
|
|
|
module.exports = {
|
|
initializeWorkerStdio,
|
|
unavailable,
|
|
wrapProcessMethods
|
|
};
|