worker: use copy of process.env · nodejs/node@8bd7909 (original) (raw)

`@@ -125,6 +125,25 @@ if (isMainThread) {

`

125

125

`}

`

126

126

```` ```


`127`

`127`

``

``

`128`

`+

## worker.SHARE_ENV

`

``

`129`

`+

<!-- YAML

`

``

`130`

`+

added: REPLACEME

`

``

`131`

`+

-->

`

``

`132`

`+`

``

`133`

`+

* {symbol}

`

``

`134`

`+`

``

`135`

`` +

A special value that can be passed as the `env` option of the [`Worker`][]

``

``

`136`

`+

constructor, to indicate that the current thread and the Worker thread should

`

``

`137`

`+

share read and write access to the same set of environment variables.

`

``

`138`

`+`

``

`139`

```` +

```js

``

140

`+

const { Worker, SHARE_ENV } = require('worker_threads');

`

``

141

`+

new Worker('process.env.SET_IN_WORKER = "foo"', { eval: true, env: SHARE_ENV })

`

``

142

`+

.on('exit', () => {

`

``

143

`+

console.log(process.env.SET_IN_WORKER); // Prints 'foo'.

`

``

144

`+

});

`

``

145


```

``

146

+

128

147

`## worker.threadId

`

129

148

`<!-- YAML

`

130

149

`added: v10.5.0

`

`@@ -380,7 +399,11 @@ Notable differences inside a Worker environment are:

`

380

399

`` and [process.abort()][] is not available.

``

381

400

`` - [process.chdir()][] and process methods that set group or user ids

``

382

401

` are not available.

`

383

``

`` -

``

``

402

`` +

``

``

403

`+

unless otherwise specified. Changes to one copy will not be visible in other

`

``

404

`+

threads, and will not be visible to native add-ons (unless

`

``

405

`` +

worker.SHARE_ENV has been passed as the env option to the

``

``

406

`` +

[Worker][] constructor).

``

384

407

`` - [process.title][] cannot be modified.

``

385

408

`` - Signals will not be delivered through [process.on('...')][Signals events].

``

386

409

`` - Execution may stop at any point as a result of [worker.terminate()][]

``

`@@ -439,25 +462,30 @@ if (isMainThread) {

`

439

462

`` If options.eval is true, this is a string containing JavaScript code

``

440

463

` rather than a path.

`

441

464

`` * options {Object}

``

``

465

`` +

``

``

466

`` +

the Worker thread. As a special value, worker.SHARE_ENV may be used

``

``

467

`+

to specify that the parent thread and the child thread should share their

`

``

468

`` +

environment variables; in that case, changes to one thread’s process.env

``

``

469

`` +

object will affect the other thread as well. Default: process.env.

``

442

470

`` * eval {boolean} If true, interpret the first argument to the constructor

``

443

471

` as a script that is executed once the worker is online.

`

444

``

`` -

``

445

``

`` -

available as [require('worker_threads').workerData][]. The cloning will

``

446

``

`-

occur as described in the [HTML structured clone algorithm][], and an error

`

447

``

`-

will be thrown if the object cannot be cloned (e.g. because it contains

`

448

``

`` -

functions).

``

``

472

`` +

``

``

473

`` +

V8 options (such as --max-old-space-size) and options that affect the

``

``

474

`` +

process (such as --title) are not supported. If set, this will be provided

``

``

475

`` +

as [process.execArgv][] inside the worker. By default, options will be

``

``

476

`+

inherited from the parent thread.

`

449

477

`` * stdin {boolean} If this is set to true, then worker.stdin will

``

450

478

`` provide a writable stream whose contents will appear as process.stdin

``

451

479

` inside the Worker. By default, no data is provided.

`

452

480

`` * stdout {boolean} If this is set to true, then worker.stdout will

``

453

481

`` not automatically be piped through to process.stdout in the parent.

``

454

482

`` * stderr {boolean} If this is set to true, then worker.stderr will

``

455

483

`` not automatically be piped through to process.stderr in the parent.

``

456

``

`` -

``

457

``

`` -

V8 options (such as --max-old-space-size) and options that affect the

``

458

``

`` -

process (such as --title) are not supported. If set, this will be provided

``

459

``

`` -

as [process.execArgv][] inside the worker. By default, options will be

``

460

``

`-

inherited from the parent thread.

`

``

484

`` +

``

``

485

`` +

available as [require('worker_threads').workerData][]. The cloning will

``

``

486

`+

occur as described in the [HTML structured clone algorithm][], and an error

`

``

487

`+

will be thrown if the object cannot be cloned (e.g. because it contains

`

``

488

`` +

functions).

``

461

489

``

462

490

`### Event: 'error'

`

463

491

`<!-- YAML

`

`` @@ -628,6 +656,7 @@ active handle in the event system. If the worker is already unref()ed calling

``

628

656

`` [vm]: vm.html

``

629

657

`` [worker.on('message')]: #worker_threads_event_message_1

``

630

658

`` [worker.postMessage()]: #worker_threads_worker_postmessage_value_transferlist

``

``

659

`` +

``

631

660

`` [worker.terminate()]: #worker_threads_worker_terminate_callback

``

632

661

`` [worker.threadId]: #worker_threads_worker_threadid_1

``

633

662

`[Addons worker support]: addons.html#addons_worker_support

`