process.env
process.env
属性返回包含用户环境的对象。
参见 environ(7)
。
此对象的示例如下所示:
{
TERM: 'xterm-256color',
SHELL: '/usr/local/bin/bash',
USER: 'maciej',
PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin',
PWD: '/Users/maciej',
EDITOR: 'vim',
SHLVL: '1',
HOME: '/Users/maciej',
LOGNAME: 'maciej',
_: '/usr/local/bin/node'
}
可以修改此对象,但此类修改不会反映在 Node.js 进程之外,或反映到其他 Worker
线程(除非显示请求)。
换句话说,以下示例将不起作用:
$ node -e 'process.env.foo = "bar"' && echo $foo
但是以下示例则将起作用:
process.env.foo = 'bar';
console.log(process.env.foo);
在 process.env
上分配属性会将值隐式转换为字符串。
此行为已弃用。 当值不是字符串、数字或布尔值时,Node.js 的未来版本可能会抛出错误。
process.env.test = null;
console.log(process.env.test);
// => 'null'
process.env.test = undefined;
console.log(process.env.test);
// => 'undefined'
使用 delete
从 process.env
中删除属性。
process.env.TEST = 1;
delete process.env.TEST;
console.log(process.env.TEST);
// => undefined
在 Windows 操作系统上,环境变量不区分大小写。
process.env.TEST = 1;
console.log(process.env.test);
// => 1
除非在创建 Worker
实例时显式指定,否则每个 Worker
线程都有自己的 process.env
副本,基于其父线程的 process.env
或指定为 Worker
构造函数的 env
选项的任何内容。
对 process.env
的更改不会跨 Worker
线程可见,只有主线程可以进行对操作系统或原生插件可见的更改。
The process.env
property returns an object containing the user environment.
See environ(7)
.
An example of this object looks like:
{
TERM: 'xterm-256color',
SHELL: '/usr/local/bin/bash',
USER: 'maciej',
PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin',
PWD: '/Users/maciej',
EDITOR: 'vim',
SHLVL: '1',
HOME: '/Users/maciej',
LOGNAME: 'maciej',
_: '/usr/local/bin/node'
}
It is possible to modify this object, but such modifications will not be
reflected outside the Node.js process, or (unless explicitly requested)
to other Worker
threads.
In other words, the following example would not work:
$ node -e 'process.env.foo = "bar"' && echo $foo
While the following will:
process.env.foo = 'bar';
console.log(process.env.foo);
Assigning a property on process.env
will implicitly convert the value
to a string. This behavior is deprecated. Future versions of Node.js may
throw an error when the value is not a string, number, or boolean.
process.env.test = null;
console.log(process.env.test);
// => 'null'
process.env.test = undefined;
console.log(process.env.test);
// => 'undefined'
Use delete
to delete a property from process.env
.
process.env.TEST = 1;
delete process.env.TEST;
console.log(process.env.TEST);
// => undefined
On Windows operating systems, environment variables are case-insensitive.
process.env.TEST = 1;
console.log(process.env.test);
// => 1
Unless explicitly specified when creating a Worker
instance,
each Worker
thread has its own copy of process.env
, based on its
parent thread’s process.env
, or whatever was specified as the env
option
to the Worker
constructor. Changes to process.env
will not be visible
across Worker
threads, and only the main thread can make changes that
are visible to the operating system or to native add-ons.