当前加载的node.js模块列表?

Udo*_*o G 11 node.js

node.js中是否有一个函数可以为我提供所有当前加载的模块 - 甚至更好的是它们的文件名?

我想在加载的模块更新后立即重新启动我的进程,因此需要知道需要监视哪些文件的更改...

Ana*_*liy 15

检查module模块源.你的答案是:

Object.keys(require('module')._cache);
Run Code Online (Sandbox Code Playgroud)


mkl*_*nt0 11

补充Anatoliy的有用答案:

从Node.js v0.3.0开始,require.cache包含加载的非核心模块:

 Object.keys(require.cache);  # lists full filenames of loaded non-core modules
Run Code Online (Sandbox Code Playgroud)

其优点require.cache在于它与文档不同module._cache.

注意:

  • 核心模块,如util不显示require.cache.

    • 要测试模块是否是核心模块,请使用require.resolve(<name>):如果它返回<name>,即仅仅是模块名称本身,则模块是核心模块; 非核心模块将返回其完整文件名.
  • require.cache包含所有当前加载的非核心模块的哈希作为module实例,由其完整文件名键入.