refactor(init): skip module register() call during db init to avoid next.js imports
- update comment to clarify that only manifest.permissions are registered before seed - remove register() invocation from loadModules() to prevent incompatible next.js imports in cli context
This commit is contained in:
+9
-13
@@ -5,10 +5,11 @@
|
||||
* - Modules externes : découverts via discoverModules() ; chaque module
|
||||
* exporte ses propres createTables/dropTables.
|
||||
*
|
||||
* Les permissions ajoutées par les modules doivent être enregistrées AVANT
|
||||
* le seed de la BD pour qu'elles soient persistées et auto-attribuées au
|
||||
* rôle admin. C'est pour cela qu'on appelle register() de chaque module
|
||||
* avant initFeatures().
|
||||
* Les permissions des modules (manifest.permissions) sont enregistrées AVANT
|
||||
* le seed de la BD pour qu'elles soient persistées et auto-attribuées au rôle
|
||||
* admin. register() n'est PAS appelé ici — les enregistrements runtime (pages,
|
||||
* nav, routes) ne sont pas nécessaires pour l'init BD et tireraient des imports
|
||||
* Next.js incompatibles avec le contexte CLI.
|
||||
*/
|
||||
|
||||
import { createTables as authCreate, dropTables as authDrop } from './auth/db.js';
|
||||
@@ -26,19 +27,14 @@ async function loadModules() {
|
||||
const modules = getRegisteredModules();
|
||||
validateModuleEnvVars(modules);
|
||||
|
||||
// Enregistre les permissions du module et exécute son register() pour que
|
||||
// tous les hooks runtime soient en place avant le seed.
|
||||
// Enregistre les permissions déclarées dans le manifest de chaque module.
|
||||
// register() n'est PAS appelé ici : les enregistrements runtime (pages, nav,
|
||||
// routes, storage) ne servent à rien dans le contexte CLI et tireraient des
|
||||
// imports Next.js (next/headers, JSX) qui ne sont pas disponibles en Node.js.
|
||||
for (const mod of modules) {
|
||||
if (Array.isArray(mod.manifest?.permissions)) {
|
||||
registerPermissions(mod.manifest.permissions);
|
||||
}
|
||||
if (typeof mod.register === 'function') {
|
||||
try {
|
||||
await mod.register();
|
||||
} catch (error) {
|
||||
fail(`zen-modules: ${mod.manifest.name} register() threw — ${error.message}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
return modules;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user