process.allowedNodeEnvironmentFlags


process.allowedNodeEnvironmentFlags 属性是一个特殊的、只读的 Set,包含 NODE_OPTIONS 环境变量中允许的标志。

【The process.allowedNodeEnvironmentFlags property is a special, read-only Set of flags allowable within the NODE_OPTIONS environment variable.】

process.allowedNodeEnvironmentFlags 扩展了 Set,但重写了 Set.prototype.has,以识别几种不同的标志表示方式。在以下情况下,process.allowedNodeEnvironmentFlags.has() 将返回 true

  • 标志可以省略前导的单个(-)或双(--)破折号;例如, inspect-brk 表示 --inspect-brk,或 r 表示 -r
  • 传递给 V8 的标志(如 --v8-options 中列出)可以将一个或多个非前导破折号替换为下划线,反之亦然; 例如,--perf_basic_prof--perf-basic-prof--perf_basic-prof 等。
  • 标志可以包含一个或多个等号(=);第一次出现的等号及其之后的所有字符将被忽略; 例如,--stack-trace-limit=100
  • 标志必须NODE_OPTIONS 中允许使用。

在迭代 process.allowedNodeEnvironmentFlags 时,标志只会出现一次;每个标志都以一个或多个短横线开头。传递给 V8 的标志会使用下划线代替非前导的短横线:

【When iterating over process.allowedNodeEnvironmentFlags, flags will appear only once; each will begin with one or more dashes. Flags passed through to V8 will contain underscores instead of non-leading dashes:】

import { allowedNodeEnvironmentFlags } from 'node:process';

allowedNodeEnvironmentFlags.forEach((flag) => {
  // -r
  // --inspect-brk
  // --abort_on_uncaught_exception
  // ...
});const { allowedNodeEnvironmentFlags } = require('node:process');

allowedNodeEnvironmentFlags.forEach((flag) => {
  // -r
  // --inspect-brk
  // --abort_on_uncaught_exception
  // ...
});

process.allowedNodeEnvironmentFlagsadd()clear()delete() 方法不起作用,并且会悄无声息地失败。

【The methods add(), clear(), and delete() of process.allowedNodeEnvironmentFlags do nothing, and will fail silently.】

如果 Node.js 在编译时不支持 NODE_OPTIONS(如 process.config 所示),process.allowedNodeEnvironmentFlags 将包含本应允许的内容。

【If Node.js was compiled without NODE_OPTIONS support (shown in process.config), process.allowedNodeEnvironmentFlags will contain what would have been allowable.】