// a.js
require('express');
require('./b');
// b.js
require('./c');
require('mocha');
// c.js
// I would like to detect here when all "static" dependencies were resolved (express, mocha, b)
所有静态依赖关系都解决时,是否有全局事件?还是任何其他方式(异步)触发此类事件?
编辑:
似乎我可以通过以下代码来实现:
process.nextTick(() => {
console.log(Object.keys(require.cache));
});
上面的代码应在所有“静态”要求都已解决/加载后执行。当然,如果事件循环很忙(例如无限循环),则此代码将永远不会执行。据我测试,它似乎有效。
答案 0 :(得分:0)
在这种情况下没有这种全局错误处理程序。但是,请立即尝试使用此解决方案,
process.on('uncaughtException', function (error) {
if (error.code === 'MODULE_NOT_FOUND') {
console.log('Module not found error');
// MODULE IS NOT RESOLVED
}
});
在加载模块之前订阅此事件。如果模块未解析,则节点将引发Cannot find module
错误,相关部分(在if语句内部)将执行。
编辑
在nodejs中,模块可以在运行时中的任何时间加载,因此在解决所有模块时不可能(或不实际)调用处理程序。
相反,您可以将模块导入try,catch块中(如果可能)。