我在哪里可以获得所有本机节点模块的数组?

Tho*_*ggi 2 javascript node.js

我正在寻找一种方法来获取所有可用节点模块的列表。动态获取它会很有趣,因为不同的版本或未来版本可能会添加或弃用模块。

Ita*_*man 5

如果您使用的是 Node 版本 > 8.11.3,推荐的实现方式是使用对象的builtinModules属性module,如下所示:

const builtins = require('module').builtinModules;
Run Code Online (Sandbox Code Playgroud)

更多详情:https : //nodejs.org/api/modules.html#modules_module_builtinmodules


Tho*_*ggi 0

以编程方式获取列表(仅适用于节点 8 及以上)

console.log(require("module").builtinModules)
Run Code Online (Sandbox Code Playgroud)

最新名单:

const builtins = [
  '_http_agent',       '_http_client',        '_http_common',
  '_http_incoming',    '_http_outgoing',      '_http_server',
  '_stream_duplex',    '_stream_passthrough', '_stream_readable',
  '_stream_transform', '_stream_wrap',        '_stream_writable',
  '_tls_common',       '_tls_wrap',           'assert',
  'async_hooks',       'buffer',              'child_process',
  'cluster',           'console',             'constants',
  'crypto',            'dgram',               'dns',
  'domain',            'events',              'fs',
  'fs/promises',       'http',                'http2',
  'https',             'inspector',           'module',
  'net',               'os',                  'path',
  'perf_hooks',        'process',             'punycode',
  'querystring',       'readline',            'repl',
  'stream',            'string_decoder',      'sys',
  'timers',            'tls',                 'trace_events',
  'tty',               'url',                 'util',
  'v8',                'vm',                  'worker_threads',
  'zlib'
]
Run Code Online (Sandbox Code Playgroud)

这是一个较旧的列表:

const builtins = [
  'assert',         'buffer',   'child_process',
  'cluster',        'console',  'constants',
  'crypto',         'dgram',    'dns',
  'domain',         'events',   'fs',
  'http',           'https',    'module',
  'net',            'os',       'path',
  'process',        'punycode', 'querystring',
  'readline',       'repl',     'stream',
  'string_decoder', 'sys',      'timers',
  'tls',            'tty',      'url',
  'util',           'vm',       'zlib'
];
Run Code Online (Sandbox Code Playgroud)

这是一个尝试在所有版本的节点上工作的函数:

export const builtins = () => {
  try {
    // eslint-disable-next-line @typescript-eslint/no-var-requires
    const result = require('module');
    // eslint-disable-next-line node/no-unsupported-features/node-builtins
    return result.builtinModules;
  } catch (e) {
    // prettier-ignore
    return [
      'assert',         'buffer',   'child_process',
      'cluster',        'console',  'constants',
      'crypto',         'dgram',    'dns',
      'domain',         'events',   'fs',
      'http',           'https',    'module',
      'net',            'os',       'path',
      'process',        'punycode', 'querystring',
      'readline',       'repl',     'stream',
      'string_decoder', 'sys',      'timers',
      'tls',            'tty',      'url',
      'util',           'vm',       'zlib'
    ];
  }
};

Run Code Online (Sandbox Code Playgroud)