Tengo un árbol de directorios que contiene archivos javascript, cada uno de los cuales exporta una clase. Necesito cargar todos estos módulos en una matriz que se asigne a cómo se organizan estos archivos en el sistema de archivos:
Por ejemplo:
// rootDir/archivoA.js
module.exports = class A { … }
// rootDir/subDir/fileB.js
module.exports = class B { … }
—->
[ { path: 'rootDir/fileA.js', value: class A { … } }, { path: 'rootDir/subDir/fileB.js', value: class B { … } } ]
Idealmente, se cargarían en una matriz con la estructura anterior. El árbol de directorios podría tener muchos archivos organizados de cualquier forma posible.
Intenté hacer esto usando require, pero como es sincrónico, eso solo funciona si lo ejecuto en la parte superior de mi código. Cuando lo ejecuto en un nivel inferior, el código subsiguiente se ejecuta antes de que se carguen todos los módulos y, por lo tanto, se producen errores porque las clases no están allí cuando intento usarlas.
Pregunta anterior que documenta lo que probé para un caso de uso similar pero diferente:
Cómo requerir directorios usando async / await
¿Cómo puedo crear la matriz de objetos de clase de manera que mi código pueda usar los módulos cargados?