是否可以在不执行的情况下将node.js模块加载到缓存中? 我想将require.main更改为测试\调试到缓存文件并稍后执行。
答案 0 :(得分:1)
不是直接但您可以将模块名称存储在变量中并创建一个名为executeModule function(moduleName) {var modules[moduleName] = require(moduleName);}
的函数
没有真正的方法来包含模块,但不要调用它的构造函数。一些模块要求您自己调用它,但最多的模块会自动调用它。
答案 1 :(得分:0)
如果您指的是内部模块缓存:不,这是不可能的。 Node.js缓存模块的导出,只能通过执行模块获得。
您可以通过加载模块的代码并在自定义上下文中执行来拦截模块执行(请参阅vm
module)。但是,您需要解决可能(并且将会)发生的各种问题。我想这真的很难看。这可能是一种可能的解决方案,因为您可以完全控制模块范围。例如,您可以定义自己的require()
,require.main
和module
的实现。我从来没有尝试过,但这是我能想到的唯一方法。
根据您的要求,可能只需调用一个新的node.js进程来执行另一个模块(将是require.main
)。